Time.deltaTime和轴输入

时间:2018-03-14 20:13:38

标签: c# unity3d game-engine

我有一个简单的问题。假设我想通过使用Vector2速度变量来转换它来移动我的角色,它将从Input.GetAxis中获取它的值。当我编写代码时:

Vector2 input=new Vector2(Input.GexAxis("Horizontal"), Input.GetAxis("Vertical")); 

velocity.x=input.x* Time.deltaTime * moveSpeed; 
velocity.y+=gravityTime.deltaTime; 
transform.Translate(velocityTime.deltaTime);

我得到一个奇怪的错误,其中我的角色几乎没有移动(它移动但非常缓慢并且它口吃很多)。但是,从velocity.x中删除Time.deltaTime后,我可以正常工作。我知道Time.deltaTime是什么以及它用于什么但是我不知道为什么我不能将它与input.x一起使用但是可以在重力下使用它?

btw moveSpeed和gravity只是具有公开指定值的浮点变量。

1 个答案:

答案 0 :(得分:0)

您可以使用更简单(但数量更多)的代码实现移动。

if (Input.GetKey(KeyCode.W))
{
        gameObject.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
}

只需针对每个方向重复此操作即可。