问题描述
我正在使用 pygame 创建游戏,但遇到了问题。我的游戏是太空游戏:有流星向你袭来,你必须躲避它们,还可以向它们发射导弹。当导弹击中流星时,我想让导弹消失并使流星重新回到它开始坠落的地方。我看到了一行代码,展示了如何通过这样做使图像透明:
transparant = (0,0)
#Code in between
missle.image = missleImg
#I wrote some code to see if the missle was touching a meteor
missle.image.fill(transparent)
然而,当我再次尝试射击导弹时,它仍然是透明的。有没有人有更好的方法来取消和重新设置图像?
解决方法
使用列表或组来组织对象。为流星创建一个列表或组,为导弹创建另一个列表或组。当导弹击中流星时,从容器中取出物体。在需要时创建新对象:
如果流星立即出现在不同的位置,那么改变流星的位置属性就足够了,而不是破坏一个对象并创建一个新对象。
例如pygame.sprite.Sprite
和 pygame.sprite.Group
:
meteor_group = pygame.sprite.Group():
missile_group = pygame.sprite.Group():
pygame.sprite.groupcollide(meteor_group,missile_group,True,True)
例如列表:
meteor_list = []:
missile_list = []:
for meteor in meteor_list[:]:
for missile in missile_list[:]:
collide = # [...] check for collision
if collide:
meteor_list.remove(meteor)
missile_list.remove(missile)