链条碰撞器
ChainCollider 定义一条连接线段的链。专为静态地形表面和复杂边界设计,使用单个盒形或线段碰撞体难以实现的场景。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
points | Vec2[] | [] | 链条顶点,以物理单位计(局部空间) |
isLoop | boolean | false | 将最后一个点连接回第一个点,形成闭合环 |
friction | number | 0.6 | 表面摩擦力 |
restitution | number | 0.0 | 弹性 |
categoryBits | number | 1 | 碰撞过滤类别位 |
场景视图中的点编辑
在编辑器中选中带有 ChainCollider 的实体时,场景视图中会显示点控制点:
- 拖拽控制点移动点
- 双击线段插入新点
- 右键点击控制点删除点
isLoop
当 isLoop 为 false 时,链条是开放路径——物体可以绕过端点。当 isLoop 为 true 时,最后一个点连接回第一个点,形成闭合边界。
开放链条——适用于地形表面:
commands.spawn( Transform.default(), RigidBody.with({ bodyType: 0 }), ChainCollider.with({ points: [ { x: -10, y: 0 }, { x: -5, y: 2 }, { x: 0, y: 0 }, { x: 5, y: 1 }, { x: 10, y: 0 }, ], isLoop: false, }),);闭合环——适用于封闭区域:
commands.spawn( Transform.default(), RigidBody.with({ bodyType: 0 }), ChainCollider.with({ points: [ { x: -5, y: -5 }, { x: 5, y: -5 }, { x: 5, y: 5 }, { x: -5, y: 5 }, ], isLoop: true, }),);提示
- 链条碰撞体没有体积,因此只在一侧产生碰撞。按逆时针顺序排列点以获得朝外的法线。
- 与 PolygonCollider 不同,链条碰撞体没有顶点数量限制——可以使用任意数量的点定义地形。
- 对于动态碰撞形状,请使用 PolygonCollider 或基础碰撞体类型。