为什么我的角色只在我使用 pygame.key.get_pressed() 时向左移动?

Why does my character only move left when I use pygame.key.get_pressed()?

我是 Python 的新手,但我决定尝试在 Pygame 中制作一款格斗游戏。 我的角色只会在强制更新时向左移动。

我试过了:

向下键

if event.key == pygame.K_d:

向上键

if event.key == pygame.K_d or event.key == pygame.K_a:
    x_change = 0

并且它在一定程度上起作用。就是需要突然变向,又变不了方向,很烦人。

我还将 OR 更改为 AND,因此当两者都被抬起时它会停止,但这会阻止从两个方向移动。

这样做是为了让我可以在不战斗的情况下移动,因为测试原因

fighting = False

while not fighting:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            fighting - False

        keys = pygame.key.get_pressed()

        if keys[pygame.K_a]:
            x_change1 = -5

        if keys[pygame.K_d]:
            x_change1 = 5

        if not keys[pygame.K_a] and keys[pygame.K_d]:
            x_change1 = 0 

        x1 += x_change1


    gameDisplay.fill(white)
    fighter1(x1,y1)
    pygame.display.update()
    clock.tick(28)

我的家伙只在我强制更新时才向左移动 X 个像素,例如再次按 A(向左)抬起 A 或将鼠标移到 window 上。 D(右)注册但没有移动。一旦按下A,即使按下键也不会停止。
我想解决这个问题,这样我就可以更轻松地添加跳跃、攻击和玩家 2。

您在这里缺少非运算符:

if not keys[pygame.K_a] and keys[pygame.K_d]:
    x_change1 = 0 

这样添加:

if not keys[pygame.K_a] and not keys[pygame.K_d]:
    x_change1 = 0