跳转到内容

链条碰撞器

ChainCollider 定义一条连接线段的链。专为静态地形表面和复杂边界设计,使用单个盒形或线段碰撞体难以实现的场景。

属性

属性类型默认值说明
pointsVec2[][]链条顶点,以物理单位计(局部空间)
isLoopbooleanfalse将最后一个点连接回第一个点,形成闭合环
frictionnumber0.6表面摩擦力
restitutionnumber0.0弹性
categoryBitsnumber1碰撞过滤类别位

场景视图中的点编辑

在编辑器中选中带有 ChainCollider 的实体时,场景视图中会显示点控制点:

  • 拖拽控制点移动点
  • 双击线段插入新点
  • 右键点击控制点删除点

isLoop

isLoopfalse 时,链条是开放路径——物体可以绕过端点。当 isLooptrue 时,最后一个点连接回第一个点,形成闭合边界。

开放链条——适用于地形表面:

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 或基础碰撞体类型。

参见