John_Norton
@John_Norton
Game developer

Какое лучше использовать передвижение в 2д-платформере?

Мне чисто ради интереса хочется узнать: Какое лучше использовать передвижение в 2д-платформере. Как я знаю есть 4 способа передвижения
НЕФИЗИЧЕСКОГО
Через transform.Translate и ещё какие-то методы не вдавался в такие подробности, так как всегда использовал физический
и
2 ФИЗИЧЕСКОГО
Через метод _rb.AddForce() и _rb.Velocity()
В 3д-играх я понимаю для чего нужен физический, но в 2д-платформере не понимаю зачем так нагружать систему, если вполне может подойти и нефизический способ передвижения
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
EveningEugene
@EveningEugene
Unity-разраб
Translate() перемещает объекты без проверки на столкновения. То есть, предметы не будут останавливаться при визуальном столкновении со стенами и прочем, а просто проходить сквозь, даже без вызова методов типа OnCollisionEnter() и прочее.

Второй нефизический способ - это модификация transform.position напрямую.

Если тебе нужно, чтоб персонаж прыгал, падал, отталкивался от стен, сам толкал блоки и т.д. - то тебе нужны физические способы, потому что перечисленные штуки и есть суть физического движения.

_rb.AddForce() - позволяет прикладывать силы к физическому объекту, а физ.движок сам обсчитает, как именно это повлияет на конечный вектор скорости объекта.

_rb.velocity (это свойство, а не функция, как вы написали) - редактирование вектора движения напрямую. Задаёшь конечный вектор скорости, а физический движок уже двигает объект.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы