我正在努力如何做到这一点,以便当在 Pygame 中按下某个键时,您无法继续按住该键。 我正在研究玩家跳跃,但除非只按一次键,否则它不起作用。 这是我的按键代码:
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and not self.jumping:
self.jumping = True
这是我的跳跃方法(也包括重力)
def gravity(self):
# if the player isn't jumping
if not self.jumping:
# set acceleration constant and accelerate
self.accel_y = PLAYER_ACCELERATION
self.y_change += self.accel_y
# terminal velocity
if abs(self.y_change) >= PLAYER_MAX_SPEED_Y:
# set the y change to the max speed
self.y_change = PLAYER_MAX_SPEED_Y
self.y += self.y_change
else: # jumping
self.accel_y = -PLAYER_ACCELERATION_JUMPING
self.y_change += self.accel_y
if abs(self.y_change) >= PLAYER_MAX_SPEED_JUMPING:
self.jumping = False
self.y += self.y_change
print(self.y_change)
玩家可以继续按住向上箭头键,玩家就会飞起来 - 这不好。我希望你只能按一次,然后 self.jumping
设置为False
当它达到最高速度时(我已经实现了)
最佳答案
不要使用pygame.key.get_pressed()
在这种情况下,请使用键盘事件(请参阅 pygame.event )。
pygame.key.get_pressed()
返回包含每个键的状态的列表。如果按住某个键,则该键的状态为 True
,否则为 False
。使用pygame.key.get_pressed()
评估按钮的当前状态并获得连续移动:
键盘事件仅在按键状态更改时发生一次。每次按下按键时,KEYDOWN
事件都会发生一次。每次释放按键时KEYUP
都会发生一次。使用键盘事件进行单个操作或逐步移动。
例如:
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and not self.jumping:
self.jumping = True
关于python - 如何在 pygame 中禁用按键按住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65049343/