按下多个键时改变移动速度

问题描述

我正在尝试使用pygame制作一个简单的射击游戏,但我很好奇。 按下方向键使形状移动。 在这里,如果您先按向右方向键和向左方向键, 如何以比向右方向键低的速度向右移动? 这是我的原始码

while True:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()       
    pressed=pygame.key.get_pressed()
    if pressed[pygame.K_LEFT]:
        player_left=1
        pos_x -=6
        if player_left==1 and pressed[pygame.K_RIGHT]:
            player_left=0
            pos_x-=3  

解决方法

为上次按下的方向键(last_direction_key)添加状态。在KEYDOWN事件中设置状态(请参见pygame.event模块)。 如果仅按下 LEFT ,则向左移动。如果仅按下 RIGHT ,则向右移动。如果同时按下 LEFT RIGHT ,则根据last_direction_key的状态,向最后未按下的方向缓慢移动:

last_direction_key = None

while True:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if pressed[pygame.K_LEFT] or pressed[pygame.K_RIGHT]:
                last_direction_key = event.key

    pressed=pygame.key.get_pressed()
    if pressed[pygame.K_LEFT] and pressed[pygame.K_RIGHT]:
        if last_direction_key == pygame.K_LEFT:
            pos_x += 3
        else:
            pos_x -= 3
    elif pressed[pygame.K_LEFT]:
        pos_x -= 6
    elif pressed[pygame.K_RIGHT]:
        pos_x += 6