web-dev-qa-db-ja.com

キーを押したままスプライトを動かすにはどうすればよいですか

現在、スプライトはキーが押されるたびに1ピクセルしか移動しません。左または右のキーを押しているときに配管工のスプライトを常に動かすにはどうすればよいですか?

while running:
    setup_background()
    spriteimg = plumberright

    screen.blit(spriteimg,(x1, y1))

    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False
         Elif event.type == pygame.KEYDOWN:
             if event.key == pygame.K_UP:
                 x1 = x1 + 0
                 y1 = y1 - 1
             Elif event.key == pygame.K_DOWN:
                 x1 = x1 + 0
                 y1 = y1 + 1
             Elif event.key == pygame.K_LEFT:
                 x1 = x1 -1
                 y1 = y1 + 0
             Elif event.key == pygame.K_RIGHT:
                 x1 = x1 + 1
                 y1 = y1 + 0

    pygame.display.flip()
    clock.tick(120)
14
enrique2334

pygame.key.get_pressed を使用してそれを行うことができます。

例:

while running:
    keys = pygame.key.get_pressed()  #checking pressed keys
    if keys[pygame.K_UP]:
        y1 -= 1
    if keys[pygame.K_DOWN]:
        y1 += 1
24
qiao

このメイトを使用してください。うまく機能します。forループに入れてください。

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                playerX_change = -0.1
            if event.key == pygame.K_d:
                playerX_change = 0.1
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d:
                playerX_change = 0

    playerX += playerX_change
    player(playerX, playerY)
    pygame.display.update()
0
FastFinge