【发布时间】:2020-01-25 23:50:44
【问题描述】:
我不确定这是我的编码限制还是我的计算机限制,但我似乎遇到了在两人游戏中按下多个键的问题。按键本身可以正常工作,而且我也想要它们,但是由于两个玩家可以同时按下 4 个键(比如 W、A、UP和 LEFT) 如果他们都在向前加速并想向左或向右躲避某些东西,如果同时按下所有 4 个键,其中一个键似乎对其中一个玩家不起作用。 ... 如果player1 释放 'up' (W),'left' (A) 将突然起作用 - 同时player2 正在按下 'up' (UP) 并说对 (RIGHT)
有没有更好的方法来请求关键事件/按下以停止发生,或者我的代码是否正常,也许我的计算机只是滞后?
keystate1 = pygame.key.get_pressed()
if keystate1[pygame.K_a]:
self.speedx = -5
if keystate1[pygame.K_d]:
self.speedx = 5
if keystate1[pygame.K_w]:
self.speedy = -5
if keystate1[pygame.K.s]:
self.speedy = 5
player2 也一样,除了 [K.LEFT, K.RIGHT, K.UP, K.DOWN]
任何帮助将不胜感激
经过进一步测试,似乎只有在player1 和 player2 都按下时(W 和 UP ) 同时...然后player1 不会向左移动,除非player1 放开W 或player2 放开UP。
它根本不影响player2(UP、DOWN、LEFT、RIGHT)或任何其他player1 的方向除了左 A?
【问题讨论】:
-
好像是键盘的硬件限制,见How do I remove the limit on PC keyboard button presses?。我知道的唯一 pygame 问题与空格按钮有关,请参阅Python Pygame press two direction key and another key to shoot there's no bullet
-
谢谢。在对硬件限制进行了更多阅读之后,看起来人们必须寻找具有 6KRO、10KRO 或 NKRO 的键盘......其中 6,10 或 N 表示可以按下多少个键而不会出现“重影”。大多数标准键盘都在一个电路中设置了多个键,以节省成本,这就是为什么你只能按这么多键,然后它就不能再输入了。