C#/ Monogame:用箭头键阻挡换档键?

时间:2014-12-14 10:39:45

标签: c# macos keyboard xamarin monogame

我经常在这里找到有用的信息,现在是我自己创建一个帐户的时候了,并感谢这个社区,因为它经常帮助我!

我目前正在使用Xamarin 5.5.4在Mac OSX 10.9.5中使用Monogame 3.2编写游戏并遇到一个我以前从未见过的奇怪问题:当我按下其中一个箭头键时,似乎是即使按下它们,左右两个换档键也始终被认为是不按下的。

我在游戏循环中使用这些代码检查了这一点:

        foreach (Keys key in Keyboard.GetState().GetPressedKeys()) {
            Console.WriteLine (key.ToString ());
        }

输出始终相同。当我按下其中一个换档键或第一个(并按住)时,我得到了

LeftShift
RightShift

最后加上箭头键(如果先换挡)。但是当我先按下其中一个箭头键然后在其中一个箭头键向下时按下shift键时,这两个键不会出现。

这显然是一个问题,因为我的游戏角色现在无法在按下换档时运行(至少在首先按下箭头键并按住时)。我仔细检查了是否还阻止了像Z这样的其他键,但似乎箭头键只是阻止移位(但到目前为止我还没有检查过每一个键)。

有谁知道为什么会这样?我检查了Mac OSX中是否激活了粘滞键,但事实并非如此。可悲的是,到目前为止,我无法在互联网上找到任何东西。

任何帮助表示赞赏!非常感谢提前!

1 个答案:

答案 0 :(得分:0)

我认为MonoGame正在做一些特殊的事情来让某些键在Windows上工作,可能需要在其他平台上完成一些相同的修复。

尝试在MonoGame中查找从OS键事件转换为XNA键事件的代码。这很可能是问题所在。

同时尝试运行最新的开发分支,以确保它不是同时修复的错误。