pygame中的精灵碰撞是可见游戏中用的最基础的东西,这里结合官方文档和小甲鱼的网站上的内容做个小总结,方便日后使用。 pygame.sprite.Sprite - 可见游戏对象的简单基类。 Sprite(*groups
pygame中的精灵碰撞是可见游戏中用的最基础的东西,这里结合官方文档和小甲鱼的网站上的内容做个小总结,方便日后使用。 pygame.sprite.Sprite - 可见游戏对象的简单基类。
pygame.sprite.Group - 用于保存和管理多个 Sprite 对象的容器类。
上面两个基类是pygame中最常用,相当轻量级,只为大多数游戏常见的代码提供了一个起始点。 Sprite 类旨在用作游戏中不同类型对象的基类,为我们碰撞检测做准备。还有一个基本的 Group 类,它只存储 sprite 对象, 这样方便不同类型的精灵进行碰撞检测, 通常的操作 in / len / bool / iter 都对这个group使用。
pygame.sprite.spritecollide() - 在与另一个精灵相交的组中查找精灵
可用的回调函数
如果精灵具有 radius(半径) 属性,用于创建圆,否则会创建一个足够大的圆,以完全包围由 rect 属性给出的精灵矩形。作为碰撞回调函数传递给 *collide 函数。精灵必须具有 rect 和可选的 radius 属性。
两个精灵之间的碰撞创建的可调用测试,通过测试以查看以精灵为中心的两个圆是否重叠,在通过存储的比例缩放圆半径之后。如果精灵具有 radius 半径属性,用于创建圆,否则会创建一个足够大的圆,以完全包围由 rect 属性给出的精灵矩形。打算作为碰撞回调函数传递给 *collide 函数。 精灵必须具有 rect 和可选的 radius 属性。
通过测试它们的 bitmasks( pygame.mask.Mask.overlap()) 是否重叠来测试两个精灵之间的碰撞。 如果精灵具有 mask 属性,该属性用作 mask,否则将从精灵图像创建 mask 。 作为碰撞回调函数传递给 *collide 函数。 精灵必须具有 rect 和可选的 mask 属性。 如果要多次检查碰撞,应该考虑在加载时为精灵创建一个mask。这将提高性能,否则这可能是一个昂贵的功能,因为它会在每次检查碰撞时创建 mask 。
pygame.sprite.groupcollide - 查找在两个组之间发生碰撞的所有精灵。
|
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27