各种Sprites使用组Pygame碰撞

时间:2013-12-18 12:18:22

标签: python-3.x pygame collision-detection

我正在创建各种类,其中对象在屏幕中随机移动。我在做什么:

object = obj(screen)
object2 = Object2(screen)
object3 = Object(screen)

然后我将对象和对象2添加到如下组中:

group2 = pygame.sprite.Group(object, object2)

和另一组中的object3如:

group = pygame.sprite.Group(object3)

然后我在组中检查group2是否存在碰撞,但是使用这种方法我不知道哪个对象碰撞另一个对象:

if pygame.sprite.spritecollide(group, group2, False, pygame.sprite.collide_mask):

1 个答案:

答案 0 :(得分:4)

要处理两个不同组中的精灵碰撞,您可以使用pygame.sprite.groupcollide()

  

<强> pygame.sprite.groupcollide()
  查找在两个组之间发生碰撞的所有精灵。

     

groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict

     

这将发现两组中所有精灵之间的碰撞。通过比较每个Sprite的Sprite.rect属性或使用碰撞函数(如果它不是None)来确定碰撞。

     

group1中的每个Sprite都被添加到返回字典中。每个项目的值是group2中相交的Sprite列表。

     

如果dokill参数为True,则将从各自的组中删除碰撞的Sprite。

     

碰撞参数是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为值并返回一个bool值,指示它们是否发生碰撞。如果未传递碰撞,则所有精灵必须具有“矩形”值,该值是精灵区域的矩形,将用于计算碰撞。


因此,鉴于groupgroup2,您可以像以下一样使用它:

result = pygame.sprite.groupcollide(group, group, False, False)

,结果是dict,其中包含您正在寻找的信息,正如文档所述。