我应该如何等待pygame中的按键被释放?

问题描述 投票:0回答:1

我正在制作一款马里奥风格的游戏。我已经实现了碰撞和跳跃,但是有一个问题。如果我一直按住空格键,角色就会不断跳跃。我不希望这种情况发生。我希望玩家必须松开空格键,然后再次按下空格键,才能再次跳跃。而不是仅仅按住空格键来继续跳跃。换句话说,一旦玩家跳跃并落地,即使按住空格键,玩家也不应该跳跃。

我该如何以简单的方式做到这一点?这是有问题的代码部分:

if keys[pygame.K_w] and not in_air and collided:
        in_air = True
        y_velocity += jump_acceleration
        collisions = False

我尝试实现一个“last_jumped_time”变量,让玩家只能每 1 秒跳跃一次。然而,这并没有真正完全回答我的问题。我认为我必须在某个地方使用 pygame.KEYUP 函数来等待向上键被释放。

python pygame collision-detection game-development game-physics
1个回答
0
投票

事实证明,您可以通过实际侦听 KEYDOWN 事件而不是 KEYUP 事件来做到这一点,因为只有在尚未按下某个键时才能按下该键。这是一个简单的示例,按下 W 键时会短暂更改窗口的颜色,然后在释放 W 键并再次按下之前不会再次更改:

import pygame

width = height = 500

screen = pygame.display.set_mode((width, height))
run = True

while run:
    screen.fill((255, 255, 255))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                screen.fill((255, 0, 0))
    pygame.display.update()
© www.soinside.com 2019 - 2024. All rights reserved.