你如何在Pygame中使用基于圈子的碰撞与组碰撞方法?

时间:2012-04-28 10:58:48

标签: python pygame

在浏览了文档和各种教程网站之后,我仍然无法理解使用矩形边界框碰撞检测以外的任何方法修改sprite.collide方法。

我有一个程序需要检测精灵“钩子”和存储在名为“fishies”的精灵组中的任意一条鱼之间的碰撞

我可以使用:

for hit in pygame.sprite.spritecollide(self, self.fishies)

使用边界矩形返回碰撞精灵列表,但我想使用圆圈或蒙版。

文档说我可以使用:

pygame.sprite.spritecollide(self, self.fishies, False, collided = None)

其中“collided”是回调函数。但我无法弄明白这意味着什么。只需写下:

 pygame.sprite.spritecollide(sprite, group, dokill, pygame.sprite.collide_circle())

产生错误。

任何人都可以提供帮助,或者我误解了它应该如何运作?

1 个答案:

答案 0 :(得分:5)

我认为你几乎拥有它 - 问题是你正在调用collide_circle而不是传递函数本身。尝试这样的事情:

pygame.sprite.spritecollide(hook, fish, False, pygame.sprite.collide_circle)

唯一的区别是缺少括号。 pygame对collided参数的要求是一个函数,它接受两个精灵并返回一个布尔值,指示它们是否发生碰撞,这样你就可以传递碰撞两个精灵的任何函数,甚至是自定义精灵。