我最近开始使用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);
}
}
问题在于,当我按下箭头键时,精灵似乎加速了一秒或更短时间,当我释放键时,它似乎减速了一秒钟或更短时间。我不希望它这样做,我只是希望它在没有任何加速或减速的情况下始终保持相同的速度。
你能否让我知道我可能做错了什么?
答案 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