Движение контролера от третьего лица

Я использую довольно сложный и всеобъемлющий пакет контроллеров от третьего лица из магазина активов. https://www.assetstore.unity3d.com/en/

Мне нужно изменить эту строку в контроллере (или, возможно, добавить новый код), чтобы заставить персонажа двигаться в направлении, в котором он находится, когда нажата клавиша перемещения вперед.

Вот строка по умолчанию, но персонаж перемещается относительно камеры, а не независимо:

m_LookRotation = m_CameraTransform.rotation;

И следующая строка, которая была рекомендована заменить эту строку для достижения цели:

m_LookRotation = Quaternion.Euler(PlayerInput.GetAxisRaw(Constants.YawInputName), 0, 0);

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

[Вот полный скрипт контроллера: https://docs.google.com/document/d/1B4sstqtCqRMCLuHuxEuA9I7tO_3W4aHqEZwr73uFDjY/edit?pref=2&pli=1 ]

1 ответ

Вы можете просто умножить вращение символа и вектора вперед, то есть:

Vector3 targetForward = characterRotation * Vector3.forward;
Другие вопросы по тегам