1

我在 Unity 中使用基于 wasd 输入的破折号系统。

  if (Input.GetKeyDown(KeyCode.W))

    {

        if ((Time.time - lastTapTime) < tapSpeed)

        {

            this.Trigger_FDodge();

            Debug.Log("ForDodge");

        }

        lastTapTime = Time.time;

    }



    if (Input.GetKeyDown(KeyCode.D))

    {

        if ((Time.time - lastTapTime) < tapSpeed)

        {

            this.Trigger_RDodge();

            Debug.Log("RightDodge");

        }

        lastTapTime = Time.time;

    }

其中任何一个都可以,但是,因为我需要能够在四个方向上躲闪,所以我遇到了问题。虽然严格来说仍然是双击,但按“W”然后按“D”会触发闪避,而它只能用“WW”或“DD”触发。

当我使用 XNA 时,有输入状态选项,所以我可以存储最后按下的键和当前按下的键并进行比较。

KeyboardState lastKeyboardState = KeyboardState;

Unity有办法做到这一点吗?我也在 Unity 论坛上问过,但到目前为止,还没有人给出答案。

4

1 回答 1

2

AFAIK 不支持存储整个键盘状态Unity3D。另一方面,您不能在上次更新期间列出所有按下的键,但您必须明确检查每个键(或轴,如果您正在使用它们)。

所以你唯一能做的就是保存最后一次按下的KeyCode

KeyCode lastKey;
if (Input.GetKeyDown(KeyCode.D))
{
  //process input
  if (lastKeyCode == ...)
  {
  }
  lastKey = KeyCode.D;
}
于 2013-08-01T15:32:25.583 回答