В 2D пространстве на игроке висит Collider 2D, на враге весит тоже самое, мне нужно что - бы при столкновении они не отлетали в разные стороны. Unity

Хотел использовать:

    Physics.IgnoreCollision(gameObject.GetComponent<Collider2D>(), enemy.GetComponent<Collider2D>(), true); // где gameObject - это игрок, а enemy противник при столкновении.

код не работает, как я понял он для 3D пространства.

Как сделать что бы игрок не реагировал на противника и при столкновении не вращало игрока, как отключить эту физику


Ответы (2 шт):

Автор решения: danil2283376

Не знаю на сколько это разумно, но пока что другого решения я не нашел:

1) Поставил в компонентах Rigidbody у свойства Mass 0.0001 так как меньше не получается поставить, поставил бы ноль и тогда формула бы не работала. Та как все равно тело будет двигаться пока это будет не заметно, но в последствии я думаю станет, поэтому:

2) В методе Update для игрока просто сделал что - бы, при каждом запуске метода(кадр/сек) его Rotate постоянно устанавливался:

gameObject.transform.rotation = Quaternion.Euler(0,0,0);

Если есть более разумнее способ, пожалуйста скажите очень интересно.

Просто у меня есть мысль что 60 раз в секунду обращаться к объекту это затратно, возможно стоит сделать условие и тогда процессору не придется выполнять лишнюю работу.

→ Ссылка
Автор решения: Ananac _0

Для 2D пространства можно использовать: public static void IgnoreCollision(Collider2D collider1, Collider2D collider2, bool ignore = true);

→ Ссылка