按下另一个键后,该键不再被视为“向下”键

时间:2019-01-17 17:09:34

标签: c# unity3d

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

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

这使我无法在移动角色时旋转摄像机,因为一旦我尝试通过箭头键更改方向,就会使if语句变为false。我应该使用另一种方法吗?

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

3 个答案:

答案 0 :(得分:1)

这对我有用。

检查按钮是否被按下时,您是否正在使用else?

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

如果我只有1个,它也对我有用。即使我按下任何其他键,“ X按下”也会被打印。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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