[pygame]对象碰撞检测(二)
上一篇文章写了一个不完整的介绍,现在继续写它,当然,也是不完整的。
其实都是pygame 1.8.1更新的函数,由于没有中文资料,写写吧……虽然现在英文文档已经更新了。
以下所说的Sprite指的是继承了pygame.sprite.Sprite类的对象。
PyGame 1.8.1提供的新函数/类:
就写这三个吧。
用于把Sprite的面积(rect属性,继承自pygame.Rect类)扩大ratio倍再进行比较,返回的是一个函数。它不会对Sprite的rect进行真实的扩大/缩小。
返回的函数可以作为
中collided参数使用的(见上一篇文章)。但注意的是,这个不是一个函数,而是一个类,collided参数用的是这个类的实例,和上篇文章不同。
简化了自己编写自定义碰撞检测的麻烦,不过该函数仅仅对两个Sprite的rect扩大ratio倍再比较面积是否相交。
与之相似的是
不过,这个函数要求Sprite必须有radius属性(半径),根据半径扩大ratio倍。
这也是个类,定义与用法与pygame.sprite.collide_rect_ratio(ratio): return collided_callable相似。
left和right分别代表一个Sprite,事实上与Sprite所处的位置并没有要求(并不是规定left和right)。但这两个Sprite需要有额外的radius属性(表明半径)。
返回一个boolean(是否相交的布尔值)。这个函数也可以作为
的collided参数使用。但和上两个类不同,这是一个函数,需要把这个函数的引用作为参数(例如:collided = pygame.sprite.collide_circle不需要括号)。
其实这些类或许在实际使用pygame模块没有什么用处,不过提供给我们一个对游戏中对象碰撞检测的参考~~~