Python SpriteClide每次碰撞仅运行一次
我正在检查Python SpriteClide每次碰撞仅运行一次,python,pygame,collision-detection,Python,Pygame,Collision Detection,我正在检查导弹组,查看导弹的任何实例是否与enemyGroup中的敌人发生碰撞。运行时,它为第一个循环打印“命中”,但忽略第二个循环。为什么呢 #### Imagine this is in a game loop #### for missile in missileGroup: if pygame.sprite.spritecollide(missile, enemyGroup, False) : print(&quo
导弹组
,查看导弹
的任何实例是否与enemyGroup
中的敌人发生碰撞。运行时,它为第一个循环打印“命中”,但忽略第二个循环。为什么呢
#### Imagine this is in a game loop ####
for missile in missileGroup:
if pygame.sprite.spritecollide(missile, enemyGroup, False) :
print("Hit")
for enemy in enemyGroup:
if pygame.sprite.spritecollide(enemy, missileGroup, False) == True:
print("HI")
不会返回True
或False
,但会返回一个列表,其中包含组中与另一个精灵相交的所有精灵。您必须评估列表是否为空,而不是将结果与True
:
如果pygame.sprite.spritecollide(敌人,任务组,False)=True:
如果pygame.sprite.spritecollide(敌人,任务组,False):
无论如何,使用查找两个组之间碰撞的所有精灵
如果pygame.sprite.groupcollide(missileGroup、enemyGroup、False、False):
打印(“点击”)
见: 返回一个列表,其中包含组中与另一个精灵相交的所有精灵 看 这将发现两组中所有精灵之间的碰撞 因此,
spritecollide()
的参数必须是一个对象和一个对象。groupcollide()
的参数必须是两个pygame.sprite.Group
对象。pygame.sprite.sprite
对象列表(而不是组)不起作用
missileGroup=pygame.sprite.Group()
enemyGroup=pygame.sprite.Group()
进一步了解
精灵将从包含它的所有组中移除
因此,如果在第一个循环中调用kill()
,第二个循环将不起作用,因为精灵将从所有组中删除
在
reset
方法中调用kill()
<代码>导弹.reset()分别每一个我的.reset()
导致第二个循环失败。它仍然不会打印循环中的任何内容console@DaeshaunMorrison所以你的代码中还有一个bug,在别的地方。