В 2D пространстве на игроке висит Collider 2D, на враге весит тоже самое, мне нужно что - бы при столкновении они не отлетали в разные стороны. Unity
Хотел использовать:
Physics.IgnoreCollision(gameObject.GetComponent<Collider2D>(), enemy.GetComponent<Collider2D>(), true); // где gameObject - это игрок, а enemy противник при столкновении.
код не работает, как я понял он для 3D пространства.
Как сделать что бы игрок не реагировал на противника и при столкновении не вращало игрока, как отключить эту физику
Ответы (2 шт):
Не знаю на сколько это разумно, но пока что другого решения я не нашел:
1) Поставил в компонентах Rigidbody у свойства Mass 0.0001 так как меньше не получается поставить, поставил бы ноль и тогда формула бы не работала. Та как все равно тело будет двигаться пока это будет не заметно, но в последствии я думаю станет, поэтому:
2) В методе Update для игрока просто сделал что - бы, при каждом запуске метода(кадр/сек) его Rotate постоянно устанавливался:
gameObject.transform.rotation = Quaternion.Euler(0,0,0);
Если есть более разумнее способ, пожалуйста скажите очень интересно.
Просто у меня есть мысль что 60 раз в секунду обращаться к объекту это затратно, возможно стоит сделать условие и тогда процессору не придется выполнять лишнюю работу.
Для 2D пространства можно использовать: public static void IgnoreCollision(Collider2D collider1, Collider2D collider2, bool ignore = true);