跳转到内容

碰撞体

每个物理实体需要在 RigidBody 旁附加至少一个碰撞体形状。碰撞体定义用于碰撞检测的物理形状。

碰撞体类型

碰撞体形状适用场景
BoxCollider轴对齐矩形箱子、平台、墙壁
CircleCollider圆形球、金币、圆形物体
CapsuleCollider胶囊(矩形两端半圆)角色、药丸形物体
SegmentCollider线段薄墙、单向平台
PolygonCollider凸多边形(最多 8 顶点)自定义凸形状
ChainCollider线段链地形、复杂静态边界

通用属性

所有碰撞体(ChainCollider 除外)共享以下属性:

属性类型默认值说明
densitynumber1.0质量密度。影响刚体总质量
frictionnumber0.6表面摩擦力(0 = 冰面,1 = 橡胶)
restitutionnumber0.0弹性(0 = 无弹性,1 = 完全弹性)
isSensorbooleanfalse触发区域——检测重叠但不产生物理响应
categoryBitsnumber1碰撞过滤类别位
enabledbooleantrue启用/禁用碰撞体

BoxCollider

轴对齐矩形碰撞体。

属性类型默认值说明
halfExtentsVec2{x: 0.5, y: 0.5}半宽和半高,以物理单位计
offsetVec2{x: 0, y: 0}相对实体中心的偏移,以物理单位计
radiusnumber0.0圆角半径。大于 0 时创建圆角矩形

加上所有通用属性

CircleCollider

圆形碰撞体。

属性类型默认值说明
radiusnumber0.5圆半径,以物理单位计
offsetVec2{x: 0, y: 0}相对实体中心的偏移,以物理单位计

加上所有通用属性

CapsuleCollider

胶囊形碰撞体(矩形上下两端为半圆)。

属性类型默认值说明
radiusnumber0.5胶囊半径,以物理单位计
halfHeightnumber0.5矩形中段的半高,以物理单位计
offsetVec2{x: 0, y: 0}相对实体中心的偏移,以物理单位计

加上所有通用属性

碰撞过滤

碰撞层让你控制哪些对象可以互相碰撞。系统使用 16 个命名层和位掩码过滤。

工作原理

每个碰撞体有一个 categoryBits 字段将其分配到一个层。Settings → Physics → Collision Matrix 中的碰撞矩阵决定哪些层之间可以交互。

属性类型默认值说明
categoryBitsnumber1碰撞体所属层(位掩码,每层一个位)

当两个碰撞体的层在碰撞矩阵中被允许交互时,碰撞才会发生。

编辑器设置

  1. Settings → Physics → Collision Layers命名层(最多 16 层,如 “Player”、“Enemy”、“Ground”、“Projectile”)
  2. Settings → Physics → Collision Matrix配置矩阵——勾选需要碰撞的层对
  3. 在 Inspector 中分配层——每个碰撞体的 categoryBits 下拉菜单显示已命名的层

参见