统一键盘移动缓和?

Unity Keyboard Movement Easing?

我正在尝试复制编辑器的相机以供运行时使用,一切都按预期工作,但我正在尝试缓和运动但无法使其正常工作。这是我的运动代码。它工作正常,但没有像我想要的那样缓和。

             Vector3 move = Vector3.zero;

             if (Input.GetKey(KeyCode.W))
                 move += Vector3.forward * currentSpeed;
             if (Input.GetKey(KeyCode.S))
                 move -= Vector3.forward * currentSpeed;
             if (Input.GetKey(KeyCode.D))
                 move += Vector3.right * currentSpeed;
             if (Input.GetKey(KeyCode.A))
                 move -= Vector3.right * currentSpeed;
             if (Input.GetKey(KeyCode.E))
                 move += Vector3.up * currentSpeed;
             if (Input.GetKey(KeyCode.Q))
                 move -= Vector3.up * currentSpeed;

             transform.Translate(move);

我已经尝试了目标 Vector3,将其设置为 move,然后将位置移动到 destination。这确实如预期的那样缓和了它,但是方向都被打破了。左边向前,右边向后,依此类推

我试过改用 fixedUpdate 但还是不行。

如有任何帮助,我们将不胜感激!

尝试使用CharacterController。它是来自 Unity 的组件。简单易用,流畅。

public CharacterController controler;

public void Start(){
controller = GetComponent<CharacterController>();}

public void Move(){
controller.Move(moveDirection * Time.deltaTime);}

在 youtube 上您可以找到来自 CharacterController 的教程。

经过多次实验,easing/smoothing 可以通过在更新循环中执行以下操作来实现:

float x, y, z;
x = Input.GetAxis("Horizontal") * currentSpeed * Time.deltaTime;
z = Input.GetAxis("Vertical") * currentSpeed * Time.deltaTime;
y = 0;
transform.Translate(x,y,z);