我正在创建各种类,其中对象在屏幕中随机移动。我在做什么:
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):
答案 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值,指示它们是否发生碰撞。如果未传递碰撞,则所有精灵必须具有“矩形”值,该值是精灵区域的矩形,将用于计算碰撞。
因此,鉴于group
和group2
,您可以像以下一样使用它:
result = pygame.sprite.groupcollide(group, group, False, False)
,结果是dict
,其中包含您正在寻找的信息,正如文档所述。