7

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

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

我可以用:

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

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

文档说我可以使用:

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

其中“碰撞”是一个回调函数。但我无法弄清楚这意味着什么。简单写:

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

产生错误。

任何人都可以提供帮助,还是我误解了它应该如何工作?

4

1 回答 1

7

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

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

语法上的唯一区别是省略了括号。pygame 需要的collided参数是一个函数,该函数接受两个精灵并返回一个布尔值,指示它们是否碰撞,因此您可以传递任何碰撞两个精灵的函数,甚至是自定义的。

于 2012-04-28T14:38:29.913 回答