C#多个按键输入没有重叠

时间:2012-03-30 19:23:00

标签: c# multithreading keystroke

我正在用C#制作游戏(这是一个乒乓球游戏),我已经完成了一个“AI”,所以你可以玩1个玩家,而且我也做过多人游戏版本,但是,每当有人点击一个键(向上或向下)其他玩家的动作停止,依此类推。

所以基本上你不能玩2个玩家,因为它会打断其他玩家的动作。我不确定我需要做什么(多线程?)或其他类似的东西,这样你就可以有流畅的游戏而不会与其他玩家的按键重叠。

我无法真正搜索(即使我有),因为我不知道该搜索什么。 :)

无论如何,希望有一种方式嘿嘿。

C#表单应用程序(使用tutorila游戏引擎/库)。

2 个答案:

答案 0 :(得分:5)

您按住键盘控制器时按住键重复按键。是的,按下其他键时停止工作。

标准游戏循环方法是使用KeyDown事件设置key-is-down标志并使用KeyUp事件重置它。然后在游戏循环中检查该标志并在设置标志时移动球拍。你也可以使用GetAsyncKeyState()。

答案 1 :(得分:0)

我假设你在同一台电脑上玩。

当按下一个键时,你需要在一个单独的线程中执行这些操作,否则其他玩家按键将被该线程阻止,直到它完成执行。

我认为发生了什么:

玩家1:按住< -

玩家2:压低A

玩家1:< - 不再被注册

您需要能够确定何时按下某个键以及何时将其释放。按下它应该告诉你的应用程序“按下此键”= true。发布时,它现在是假的。这样您就不会映射到键盘本身,而是映射到应用程序中的对象,并且从键向下/向上触发的事件会更改这些设置。

这样做可以让你按住< - ,然后按住 - >,释放< - 并让你的 - >通过向右移动来采取行动。