【问题标题】:Why does my character only move left when I use pygame.key.get_pressed()?为什么我使用 pygame.key.get_pressed() 时我的角色只向左移动?
【发布时间】:2019-12-16 19:34:30
【问题描述】:

我是 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。

【问题讨论】:

    标签: python pygame python-idle


    【解决方案1】:

    您在这里缺少一个非运算符:

    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 
    

    【讨论】:

    • 谢谢!不知道 AND 和 NOT 可以一起出现在 IF 上。我通过将 x1 += x_change1 移回 1 行解决了鼠标问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多