Unity是否记得按键?

时间:2017-03-03 09:18:16

标签: c# animation unity3d

我有移动,跳跃和攻击动画但是如果我跳起来我按下攻击键,跳跃后的pj攻击并且我不想要它,所以我的问题是:

Unity是否记得用户按下的键?我可以避免吗?

2 个答案:

答案 0 :(得分:2)

  

Unity是否记得用户按下哪个键?

这取决于使用哪个输入API。

Input.GetKeyDown

Unity会记住,当使用 Input.GetKeyDown 时,关键用户仅在 1 框架中按下该按钮。在那个框架过去之后,它已经消失了,现在是假的。如果释放并再次按下该键,它将再次成立。

void Update()
{
    //True when Space key is pressed
    if (Input.GetKeyDown(KeyCode.Space))
    {

    }

    //One Frame has passed, Input.GetKeyDown will be false next time Update() is called
}

Input.GetKey

Unity会记住,当使用 Input.GetKey 时,关键用户会按每个框架。只有钥匙被释放才会成真。

void Update()
{
    //True when Space key is pressed
    if (Input.GetKey(KeyCode.Space))
    {

    }

    //One Frame has passed, Input.GetKe will STILL be true next time Update() is called
}

Input.GetAxis:

行为与 Input.GetKey 函数相同,只是它将 -1 返回到 1 值而不是{ {1}}或true。当密钥被释放时,逐渐会在接下来的几帧中返回false

Input.GetAxisRaw:

行为与 Input.GetKeyDown 函数相同,只是它将 -1 返回到 1 值而不是{ {1}}或0。当密钥被释放时,它会立即返回true

答案 1 :(得分:1)

如果您使用Animator并使用按键设置触发器,则它们会保留在内存中,您必须手动清除它们。

要重置触发器,请使用ResetTrigger(字符串名称)方法 - Unity Documentation