Python 检查是否与属于同一类的大量精灵发生碰撞?

Python 检查是否与属于同一类的大量精灵发生碰撞?,python,pygame,Python,Pygame,我正在写一个小的生存游戏。一浪接一浪地来了更多的敌人,在他们对你采取同样的行动之前,你的工作就是消灭他们 我遇到的问题是碰撞检测。我有一个“敌人”的职业,我想确保没有一个敌人可以穿越对方。Pygame的碰撞设备似乎不能满足我的需要。该函数尤其是敌方类中的“no_merge”函数。目前,它是空白的,但我已经尝试了在pygame文档中可以找到的所有不同类型的碰撞检测,但是我似乎找不到任何针对属于同一组的每个精灵的测试 我知道为什么我的代码中的no_merge()函数不起作用,它不断地检查与自身的冲突

我正在写一个小的生存游戏。一浪接一浪地来了更多的敌人,在他们对你采取同样的行动之前,你的工作就是消灭他们

我遇到的问题是碰撞检测。我有一个“敌人”的职业,我想确保没有一个敌人可以穿越对方。Pygame的碰撞设备似乎不能满足我的需要。该函数尤其是敌方类中的“no_merge”函数。目前,它是空白的,但我已经尝试了在pygame文档中可以找到的所有不同类型的碰撞检测,但是我似乎找不到任何针对属于同一组的每个精灵的测试

我知道为什么我的代码中的no_merge()函数不起作用,它不断地检查与自身的冲突,这将始终保持正确,我只是似乎找不到(或思考)正确的方法

一些额外的信息:这将是大量的精灵,小精灵的数量大约为20个,最大的大约为100个

以下是目前的功能:

    def no_merge(self):
    """Makes sure that the enemies cannot walk through each other"""
    if pygame.sprite.spritecollide(self,enemy_list,False) and enemy != self:
        do collision stuff.
这将插入到主循环中,如下所示:

while done == False # (this line hasn't indented properly on stack overflow)
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = True
for bullet in bullet_list:
    bullet.rect.x +=4
for enemy in enemy_list:
    enemy.chase()
    enemy.in_screen
    enemy.destroy()
    enemy.no_merge()

如果你用精灵对付敌人,我唯一能想到的就是如何实现
pygame.sprite.spritecollide()

如果你的敌人在一个精灵群中,这将检查该群中是否有任何唾液发生碰撞

spritecollide(sprite、group、dokill、collide=None)

  • 该组是哪一组精灵

  • 如果精灵发生碰撞,dokill将返回bool,精灵将从组中移除

  • 碰撞就是你想使用哪种碰撞(碰撞,碰撞比率,碰撞圆, 碰撞(圆形比、碰撞遮罩)


你可以读更多的

嗨,不幸的是我已经在做了,所以我不得不想办法解决这个问题。看看下面的答案