简体   繁体   中英

Need help on Pygame KEYDOWN

Just looking for assistance,

How can I adjust this so my character only moves when the LEFT of RIGHT key is held down & stops when key is released?

player_x = 10
player_y = 245
player_x_change = 0

clock = pygame.time.Clock()

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
            player_x_change = -20 
            if event.key == pygame.K_RIGHT:
                player_x_change = 20

    player_x += player_x_change

You have to check KEYUP and change player_x_change

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True

        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player_x_change = -20 
            elif event.key == pygame.K_RIGHT:
                player_x_change = 20

        elif event.type == pygame.KEYUP:
            if event.key in (pygame.K_LEFT,pygame.K_RIGHT):
                player_x_change = 0

EDIT:

if you need to stop object when LEFT and RIGHT are pressed at the same time

player_x_change = 0

while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True

        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player_x_change -= 20 
            elif event.key == pygame.K_RIGHT:
                player_x_change += 20

        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                player_x_change += 20 
            elif event.key == pygame.K_RIGHT:
                player_x_change -= 20

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM