Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SpriteClide每次碰撞仅运行一次_Python_Pygame_Collision Detection - Fatal编程技术网

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,在别的地方。