【问题标题】:Key no longer considered "down" after another key is pressed按下另一个键后,该键不再被视为“按下”
【发布时间】:2023-03-24 18:26:01
【问题描述】:

我正在尝试让一个简单的第三人称相机围绕我的角色旋转。我希望 X 键向右旋转,Z 键向左旋转。我有这个工作。我的问题是,当我按下并按住其中一个键(比如 X),然后按下任何其他键时,Input.GetKey(KeyCode.X) 停止返回 true。因此,对于下面的简单示例,它会打印消息,直到按下另一个键,然后在我重新按下该键之前不会再次打印。

void LateUpdate()
{
    if(Input.GetKey(KeyCode.X))
    {
        print("X is down"); 
    }
}

这会阻止我在移动我的角色时旋转相机,因为一旦我尝试通过箭头键改变方向,它就会使我的 if 语句变为错误。我应该使用其他方法吗?

编辑 - 这不是 Unity 或我的代码的问题。我使用的是 Teamviewer,它必须以不同方式处理输入

【问题讨论】:

  • 很遗憾,我无法用您发布的内容重新创建此内容。
  • 你能添加你正在使用的统一版本吗?
  • @Eddge 天哪,我想通了。我被远程连接到通过 Teamviewer 运行统一的笔记本电脑。这就是问题所在。直接从笔记本电脑使用时,它可以工作。感谢您的宝贵时间。
  • @Nick Lol ^^ 很高兴知道 ;)
  • 您应该创建自己的答案并将其标记为绿色,这是允许的

标签: c# unity3d


【解决方案1】:

这对我有用。在检查按钮是否被按下时,您是否正在使用 else if?

    if (Input.GetKey(KeyCode.X))
    {
        print("X is down");
    }
    if (Input.GetKey(KeyCode.Y))
    {
        print("Y is down");
    }

如果我只有 1 个 if,它也适用于我。即使我按下任何其他键“X is down”也会打印出来。

【讨论】:

  • 我发布的代码是我的完整示例。只是 1 如果。如果在按住 x 的同时按下并释放另一个键(仍然按住 x),它不会打印消息...
  • 我想通了。我被远程连接到通过 Teamviewer 运行统一的笔记本电脑。这就是问题所在。直接从笔记本电脑使用时,它可以工作。感谢您的宝贵时间。
【解决方案2】:

这可能是硬件问题。不同质量级别的键盘具有不同的行为。例如,我曾经有一个键盘,如果我同时按下三个以上的键,则在释放它们时它不会注册,并且我的角色会卡住运行或旋转或其他任何事情,直到我再次按下并释放该键。昂贵的“游戏”键盘应该比其他键盘更好地处理多个同时按键。 YMMV。

【讨论】:

    【解决方案3】:

    最终是由于远程访问。我正在使用 Teamviewer 远程访问运行 Unity 的笔记本电脑。一旦我直接使用笔记本电脑,它就会按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多