统一键盘移动缓和?
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);
我正在尝试复制编辑器的相机以供运行时使用,一切都按预期工作,但我正在尝试缓和运动但无法使其正常工作。这是我的运动代码。它工作正常,但没有像我想要的那样缓和。
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);