Итак, я делаю RPG сверху вниз.
Все идет отлично, но эта проблема довольно раздражает. Теперь, когда персонаж движется к стене, игрок дрожит взад и вперед. Я предполагаю, что это потому, что игрок пытается проникнуть в стену, а затем столкновение со стеной отталкивает его назад, что вызывает раздражающее движение вперед и назад. Мой вопрос, очевидно, как я могу предотвратить это?
Благодарность!
PS: я использую transform.translate для перемещения игрока, и я использую C #.
РЕДАКТИРОВАТЬ : я также использую 2D Rigidbody и 2Dbox коллайдеры на обоих.
Ответы:
Дрожание происходит потому, что вы деформируете игрока в стену с помощью Transform.Translate, а физический шаг говорит: «Эй, мы в стене. Давайте решим эту проблему столкновения и вытолкнем игрока обратно из стены. «.
Чтобы избежать этого, при использовании Rigidbody2D желательно использовать Rigidbody2D.MovePosition . Это гарантирует, что у вас не будет перекрывающихся коллайдеров при движении. Если коллайдер и твердое тело не могут двигаться, потому что что-то мешает, оно не будет дрожать.
Используя Rigidbody2D.MovePosition, вы можете установить значение Rigidbody2D.interpolation, чтобы движение выглядело гладким.
Однако, если Rigidbody2D.MovePosition не является идеальным для вашей игры по какой-то причине, и вы все еще хотите использовать Transform.Translate, используйте Physics2D.Raycast (или другие броски Physics2D ), чтобы увидеть, приведет ли движение к удару о стену или нет, и двигаться только в том случае, если ни одна стена не была поражена
источник