问题描述
我正在尝试使用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