闲置动画不会在keyup上触发

时间:2016-02-09 12:42:01

标签: c# unity3d

我有一名球员,我想将球员从左向右移动。我可以通过键盘事件移动播放器。但问题是,当我释放键时,播放器动画应该是空闲的。它不起作用。为什么呢?

void Update ()
{
    if (Input.GetKeyDown(KeyCode.RightArrow))
    {
        transform.Translate(Vector3.forward*Time.deltaTime);
        animation.Play("Walk_with_Bin_001");
        animation["Walk_with_Bin_001"].wrapMode = WrapMode.Loop;
    }

    if (Input.GetKeyUp(KeyCode.UpArrow))
    {
        animation.Stop("Walk_with_Bin_001");
        animation.Play("Idle");
    }
}

1 个答案:

答案 0 :(得分:1)

我怀疑您可能已经混淆了if语句条件的密钥代码。在第一个块中,您正在检查KeyCode.RightArrow的keydown - 但在第二个块中,您正在检查KeyCode.UpArrow的密钥。

这意味着即使您释放右箭头键,“Walk_with_Bin_001”也会继续循环播放,直到您按向上箭头键。更改第二个条件也使用KeyCode.RightArrow,您的代码应该按照您的预期执行,如下所示:

if (Input.GetKeyUp(KeyCode.RightArrow))
{
    animation.Stop("Walk_with_Bin_001");
    animation.Play("Idle");
}