存储键输入Unity

时间:2013-08-01 14:18:22

标签: input unity3d store

我在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论坛上提问,但到目前为止,没有人有答案。

1 个答案:

答案 0 :(得分:3)

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

所以你唯一可以做到的就是保存上次按KeyCode

KeyCode lastKey;
if (Input.GetKeyDown(KeyCode.D))
{
  //process input
  if (lastKeyCode == ...)
  {
  }
  lastKey = KeyCode.D;
}