可碰撞体
初级 设计师
可碰撞体(Collidables)是物理对象的基础实体组件。主要有三种类型:

你还可以:
碰撞
可碰撞体按照下表进行交互。
| 角色 | 刚体 | 静态体 | |
|---|---|---|---|
| 角色 | 碰撞 | 碰撞并反弹 | 碰撞 |
| 刚体 | 碰撞并反弹 | 碰撞并反弹 | 碰撞并反弹 |
| 静态体 | 碰撞 | 碰撞并反弹 | 相互穿过 |
角色没有任何惯性,因此在与刚体或静态体碰撞时无法被弹开。
还有另外三个因素决定两个可碰撞体之间是否会发生碰撞:它们的 Collision Layer(碰撞层)、Collision Group(碰撞组)和 Contact Event Handler(接触事件处理器)
碰撞层
碰撞层控制该对象是否与其他层上的对象发生碰撞。
这种关系通过模拟的碰撞矩阵来控制。
碰撞组
这个属性用于在一组对象内部过滤碰撞,当两个或多个对象必须共享同一个 Collision Layer,但它们之间不应发生碰撞时使用。
它允许共享相同 CollisionGroup.Id 的对象在它们的 IndexA、IndexB 和 IndexC 之间的绝对差值小于二时相互穿过。
其实用性最好通过具体示例来展示。
你有多个角色
A, B, C, D,全部设置为相同的CollisionLayer,它们被分成两队A, B和C, D。同一队的成员之间不应发生碰撞,你可以将A, B的 Id 设为 1,将C, D的 Id 设为 2。你有一条由三个相互连接的碰撞体组成的链
A, B, C,你不希望 A 和 C 与 B 发生碰撞,但 A 和 C 之间应该碰撞。 将 A、B 和 C 的 Id 都设为 1 以开始过滤,保持 A 的IndexA为 0,B 的为 1,C 的为 2。 A 和 C 会发生碰撞,因为它们的IndexA之差等于二, 但它们都不会与 B 碰撞,因为它们与 B 的IndexA值都只相差一。
接触事件处理器
接触事件处理器(Contact Event Handler)是一个类,每当与之关联的对象与世界发生碰撞时,它会接收碰撞数据。
它最常用于将物理对象转换为"触发盒",即当玩家角色等对象穿过它们时运行事件的区域。参见触发器。
如果你绑定到对象的接触事件处理器设置为 NoContactResponse,该对象将永远不会阻止任何东西穿过它,它只会收集碰撞事件。