关节
Joint 组件约束两个刚体,或将一个刚体约束到世界空间中的固定点。
Alpha 阶段
关节组件仍处于 Alpha 阶段,其行为和 API 可能变化。编辑器从 2.32 起提供对应检查器。
前提条件
Joint 组件由 Ammo 物理后端驱动,需要满足两个条件才能工作:
- 项目中必须导入 Ammo。 未导入时,组件面板会显示
Ammo module not found警告及导入按钮。添加方法详见物理。 - 两个被引用的实体都需要刚体组件,且各自需要 Collision 组件定义形状。
将 Entity B 留空,可将 Entity A 约束到世界空间固定点,而非另一个刚体。
关节类型
Type 选择固定、球形、铰链、滑动或六自由度关节。检查器中的选项分别为 Fixed、Ball、Hinge、Slider 和 6DoF。
类型决定其余哪些字段可见,切换类型时面板也会变化:
| 类型 | 额外字段 |
|---|---|
| Fixed | 无,仅包含始终显示的属性。 |
| Ball | Enable Limits,启用后显示摆动和扭转限制。 |
| Hinge | Enable Limits、Limits、Motor Speed、Max Motor Force。 |
| Slider | Enable Limits、Limits、Motor Speed、Max Motor Force。 |
| 6DoF | 各轴的线性和角运动、限制及弹簧字段。 |
从编辑器启动的木板链条,每块木板通过关节连接到下一块。
属性
始终显示
| 属性 | 说明 |
|---|---|
| 类型(Type) | 选择固定、球形、铰链、滑动或六自由度关节。 |
| 实体 A(Entity A) | 第一个受约束实体,必须具有刚体组件。 |
| 实体 B(Entity B) | 第二个受约束实体。留空时将实体 A 约束到世界空间。 |
| 启用碰撞(Enable Collision) | 允许两个受约束刚体彼此碰撞。 |
| 断裂冲量(Break Impulse) | 超过此冲量时关节断裂。留空表示不可断裂。 |
限制
Ball、Hinge 和 Slider 类型会显示 Enable Limits。
| 属性 | 说明 |
|---|---|
| 启用限制(Enable Limits) | 启用已配置的铰链、滑动或球形关节限制。 |
铰链与滑动关节
Motor Speed 和 Max Motor Force 不依赖 Enable Limits。
| 属性 | 说明 |
|---|---|
| 限制(Limits) | 铰链角度或滑动距离的上下限,仅在启用 Enable Limits 时显示。 |
| 电机速度(Motor Speed) | 铰链目标角速度或滑动目标线速度。 |
| 最大电机力(Max Motor Force) | 电机最大作用力或力矩,设为 0 可禁用电机。 |
球形关节
仅在启用 Enable Limits 时显示。
| 属性 | 说明 |
|---|---|
| Y 摆动限制(Swing Limit Y) | 球形关节向 Y 轴摆动的最大角度,单位为度。 |
| Z 摆动限制(Swing Limit Z) | 球形关节向 Z 轴摆动的最大角度,单位为度。 |
| 扭转限制(Twist Limit) | 球形关节绕 X 轴扭转的最大角度,单位为度。 |
六自由度
此类型用逐轴网格替代上述字段,分别设置 X、Y、Z 上的线性与角运动。
| 属性 | 说明 |
|---|---|
| 线性运动(Linear Motion X / Y / Z) | 选择各轴平移为锁定、受限或自由。 |
| 线性限制(Linear Limits X / Y / Z) | 对应轴平移受限时使用的上下限。 |
| 线性刚度(Linear Stiffness) | X、Y、Z 轴线性弹簧的刚度。 |
| 线性阻尼(Linear Damping) | X、Y、Z 轴线性弹簧的阻尼。 |
| 线性平衡位置(Linear Equilibrium) | X、Y、Z 轴线性弹簧的静止位置。 |
| 角运动(Angular Motion X / Y / Z) | 选择绕各轴旋转为锁定、受限或自由。 |
| 角度限制(Angular Limits X / Y / Z) | 对应轴旋转受限时使用的上下限。 |
| 角刚度(Angular Stiffness) | 绕 X、Y、Z 轴角弹簧的刚度。 |
| 角阻尼(Angular Damping) | 绕 X、Y、Z 轴角弹簧的阻尼。 |
| 角平衡位置(Angular Equilibrium) | 绕 X、Y、Z 轴角弹簧的静止角度。 |
只有对应的 Motion 设为 Limited 时,才会显示 Limits。
另请参阅
- 刚体组件:两个受约束实体都需要。
- Collision 组件:定义各刚体形状。
- 关节:工作原理及代码控制。
- 物理:了解物理系统。
脚本接口
可以通过 Script 组件控制 Joint 组件属性。接口详见 JointComponent。
通过脚本修改关节时,请注意以下行为:
- 设置
type会销毁并重建约束,同时清除断裂标记,但不会将已分离的刚体拉回到一起。 - 设置
swingLimitY等限制会调用约束的限制更新,因此可在应用运行时实时调整。