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

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

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

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

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]


person Xeritan    schedule 04.03.2016    source источник


Ответы (1)


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

Vector3 targetForward = characterRotation * Vector3.forward;
person Artūrs Eimanis    schedule 04.03.2016
comment
Спасибо за ответ. В полном коде, который я предоставил, где бы я разместил эту строку, не сломав что-то, поскольку пакет довольно сложный и состоит из многих частей/скриптов/и т.д. - person Xeritan; 04.03.2016
comment
@Xeritan В Update() или FixedUpdate() перед применением вектора движения к игроку, затем примените вектор targetForward к персонажу. - person Artūrs Eimanis; 04.03.2016