如何在pygame中正确移动带有按键的精灵以避免冲突

  • 本文关键字:精灵 冲突 pygame 移动 sprite
  • 更新时间 :
  • 英文 :


是一个猴子扔香蕉的简单游戏。

我想在空格键释放后启动香蕉并继续运行。当空格键被握住时,香蕉必须一直附着在猴子身上,直到空格键被释放。第一次发射工作正常,从第二次发射开始,香蕉没有正确投掷。

done=False
while not done:
for ev in pygame.event.get():
if ev.type == QUIT:
done = True
if ev.type ==KEYDOWN:
if ev.key== K_RIGHT:
move_right=True
if ev.key== K_LEFT:
move_left = True
if ev.key==K_SPACE:
space_down=True
still=True
elif ev.type ==KEYUP:
if ev.key== K_RIGHT:
move_right=False
if ev.key== K_LEFT:
move_left=False
if ev.key==K_SPACE:
still=False
space_down=False
launch=True



#Game logic
#move monkey
if move_right and monkey.rect.right<screen.get_width():
monkey.rect.x += 5
elif move_left and monkey.rect.left>0:
monkey.rect.x -= 5

#banana launch
if space_down:
banana=Throw_Objects()
banana.rect.midtop = monkey.rect.topright
space_down=False
if still and not space_down and move_right and monkey.rect.right < screen.get_width():
banana.rect.x += 5
if still and not space_down and move_left and monkey.rect.left > 0:
banana.rect.x -= 5

if launch:
for banana in all_object:
banana.rect.y -= 5
if banana.rect.top < 0:
banana.kill()

有什么建议可以确保香蕉在空格键释放时发射,以及当你按下空格键时,新香蕉将保持附着在猴子身上而不影响前一根香蕉的运动?谢谢

我在以这种方式启动后通过添加精灵组来解析

if space_down:
banana=Throw_Objects()
banana.rect.midtop = monkey.rect.topright
space_down=False

if move_right and monkey.rect.right<screen.get_width():
monkey.rect.x += 5
if still:
banana.rect.x += 5
elif move_left and monkey.rect.left>0:
monkey.rect.x -= 5
if still:
banana.rect.x -= 5
if launch :
banana.rect.y -= 5
only_banana.add(banana)
launch=False
for banana in only_banana:
banana.rect.y -= 5
for banana in all_object:
if banana.rect.top < 0:
banana.kill()

最新更新