在搜索了文档和各种教程网站后,我仍然无法理解您使用矩形边界框碰撞检测以外的任何方法修改 sprite.collide 方法的方式。
我有一个程序需要检测 Sprite “Hook”与存储在名为“fishies”的 Sprite 组中的任何一条鱼之间的碰撞
我可以使用:
for hit in pygame.sprite.spritecollide(self, self.fishies)
使用边界矩形返回碰撞 Sprite 列表,但我想使用圆圈或 mask 。
文档说我可以使用:
pygame.sprite.spritecollide(self, self.fishies, False, collided = None)
其中“碰撞”是一个回调函数。但我不知道那是什么意思。简单地写:
pygame.sprite.spritecollide(sprite, group, dokill, pygame.sprite.collide_circle())
产生错误。
谁能帮忙,还是我误解了它的工作原理?
最佳答案
我想您差不多明白了——问题是您调用的是 collide_circle
而不是传递函数本身。尝试这样的事情:
pygame.sprite.spritecollide(hook, fish, False, pygame.sprite.collide_circle)
语法上的唯一区别是省略了括号。 pygame 对 collided
参数的要求是一个函数,该函数接受两个 Sprite 并返回一个 bool 值,指示它们是否发生碰撞,因此您可以传递任何使两个 Sprite 发生碰撞的函数,甚至是自定义函数。
关于python - 你如何在 Pygame 中使用基于圆的碰撞和组碰撞方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362874/