@KseroXe

Как сделать физическое перемещение персонажа по локальным осям?

Я хочу чтобы персонаж, при нажатии клавиши "W" двигался в ту сторону, в которую он смотрит. Я знаю что можно сделать это с помощью метода Translate, но тогда персонаж некорректно взаимодействует со стенами, пытаясь сквозь них пройти.
Как можно сделать то что я хочу?
  • Вопрос задан
  • 909 просмотров
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Если хотите взаимодействовать в движении с коллайдерами, то про перемещения через transform можете забыть, используйте rigidbody или character controller, смотря что больше подходит.
По поводу осей. Глобальные оси вызываются через Vector3, например Vector3.up - это вектор (0;1;0). В случае Vector2 всё тоже самое, только без z.
Оси же самого объекта вызываются через его transform: та же ось вперёд - transform.forward в стандартном 3д или transform.up в стандартном 2д.

Движение же будет выглядеть как-то так:
// z is vertical axis (3d; y for 2d), x is horizontal axis
rigidBody.velocity = transform.forward * z + transform.right * x;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы