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

标签 python pygame

在搜索了文档和各种教程网站后,我仍然无法理解您使用矩形边界框碰撞检测以外的任何方法修改 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/

相关文章:

java - 将 Python 网络代码转换为 Java

python - 如何在 Flask 中将 unicode header 转换为字节字符串?

python - 检查生成器是否真的在一行中生成了一些东西

python - Pygame:使用 spritecollide() 访问碰撞 Sprite 的属性

python - 我如何只在 x 轴上居中文本,但能够在 pygame 中移动 y 轴?

python - 构造函数重载Python

python - Pygame 中的抗锯齿形状

python - Windows 上的 Pygame 安装 - 错误 : Unable to find vcvarsall. bat

android - 使用Android的PyGame子集进行音频

python - 为什么 tkinter 进度条会让事情变慢?