当从Input.GetAxis()

时间:2016-10-19 19:27:49

标签: c# unity3d

我最近开始使用Unity,下面有一个非常简单的脚本,可以向左,向右,向上和向下移动精灵。

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

  // Speed set to 5 in Inspector
  public int speed;

  // Update is called once per frame
  void Update () {
    var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
    var y = Input.GetAxis("Vertical") * Time.deltaTime * speed;

    transform.Translate (x, y, 0);
  }
}

问题在于,当我按下箭头键时,精灵似乎加速了一秒或更短时间,当我释放键时,它似乎减速了一秒钟或更短时间。我不希望它这样做,我只是希望它在没有任何加速或减速的情况下始终保持相同的速度。

你能否让我知道我可能做错了什么?

1 个答案:

答案 0 :(得分:3)

我通过查看API来解决这个问题。

Input.GetAxis似乎应用了平滑滤镜。当我看到Input.GetAxisRaw函数时,我发现了这个或推断出它,在其描述中它说

  

返回由axisName标识的虚拟轴的值,未应用平滑过滤。

这让我相信Input.GetAxis函数应用平滑。

所以函数现在读取

void Update () {
    var x = Input.GetAxisRaw("Horizontal") * Time.deltaTime * speed;
    var y = Input.GetAxisRaw("Vertical") * Time.deltaTime * speed;

    transform.Translate (x, y, 0);
}

谢谢大家的时间

此致 Crouz