Используя Unity3d First Person Controller, я хочу, чтобы игрок автоматически двигался вперед в том направлении, на которое смотрит камера. Он должен вести себя так же, как и при использовании клавиш со стрелками, за исключением того, что я держу клавишу со стрелкой вверх «нажатой». У меня это работает в сценарии ниже, однако игрок замедляется, когда он поворачивает камеру от первого лица от 0 градусов по оси Y. Если смотреть в сторону 0 градусов по оси Y, скорость игрока снова нормальная.
Как я могу изменить приведенный ниже сценарий, чтобы игрок всегда двигался с постоянной скоростью, независимо от поворота камеры?
Я установил этот скрипт на родительский узел First Person Controller:
public var head : GameObject;
private var motor : CharacterMotor;
// Use this for initialization
function Awake () {
motor = GetComponent(CharacterMotor);
}
// Update is called once per frame
function Update () {
// Retrieve a forward direction based on camera rotation
var directionVector = transform.forward;
directionVector.y = 0;
directionVector.Normalize();
// Apply the direction to the CharacterMotor
motor.inputMoveDirection = transform.rotation * directionVector;
motor.inputJump = Input.GetButton("Jump");
}
// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu ("Character/FPS Input Controller")