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

时间:2019-08-09 04:49:39

标签: python pygame python-idle

我是Python的新手,但我决定尝试使用Pygame制作格斗游戏。 我的角色只会在强制更新的情况下向左移动。

我尝试过:

按下键

if event.key == pygame.K_d:

向上键

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

它在一定程度上起作用。当您需要突然改变方向但无法改变方向时,这很烦人。

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

做到这一点,这样我就可以在不因测试原因而战斗的情况下移动

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)

仅当我强制进行更新(例如再次按A(向左)提起A或将鼠标移到窗口上)时,我的家伙才向左移动X像素。 D(右)注册但不动。按下A后,即使按键向上也不会停止。
我想解决此问题,以便随后可以轻松添加跳跃,攻击和玩家2。

1 个答案:

答案 0 :(得分:1)

您在这里缺少not操作符:

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