【问题标题】:store key input Unity存储键输入 Unity
【发布时间】:2013-08-01 23:32:25
【问题描述】:

我在 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 论坛上问过,但目前还没有人回答。

【问题讨论】:

    标签: input unity3d store


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      相关资源
      最近更新 更多