在浏览了文档和各种教程网站后,我仍然无法理解使用矩形边界框碰撞检测以外的任何方法修改sprite.collide方法.
我有一个程序需要检测精灵"钩子"和许多鱼中的任何一个之间的碰撞,存储在名为"fishies"的精灵组中
我可以用:
for hit in pygame.sprite.spritecollide(self, self.fishies)
Run Code Online (Sandbox Code Playgroud)
使用边界矩形返回碰撞精灵列表,但我想使用圆形或蒙版.
文档说我可以使用:
pygame.sprite.spritecollide(self, self.fishies, False, collided = None)
Run Code Online (Sandbox Code Playgroud)
其中"collided"是一个回调函数.但我无法弄明白这意味着什么.只需写:
pygame.sprite.spritecollide(sprite, group, dokill, pygame.sprite.collide_circle())
Run Code Online (Sandbox Code Playgroud)
产生错误.
任何人都可以帮助,或者我误解了它应该如何工作?
我认为你几乎拥有它 - 问题是你正在调用collide_circle而不是传递函数本身.尝试这样的事情:
pygame.sprite.spritecollide(hook, fish, False, pygame.sprite.collide_circle)
Run Code Online (Sandbox Code Playgroud)
唯一的区别是缺少括号.pygame对collided参数的要求是一个函数,它接受两个精灵并返回一个布尔值,指示它们是否相撞,因此你可以传递碰撞两个精灵的任何函数,甚至是一个自定义精灵.
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |