如何在 Pygame 中使用基于圆的碰撞和组碰撞方法



在搜索了文档和各种教程站点后,我仍然无法理解您修改 sprite.collide 方法的方式,除了矩形边界框碰撞检测之外。

我有一个程序,需要检测精灵"钩子"和许多鱼中的任何一条之间的碰撞,存储在一个名为"fishies"的精灵组中

我可以使用:

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

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

文档说我可以使用:

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

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

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

产生错误。

谁能帮忙,还是我误解了它应该如何工作?

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

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

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

最新更新