物理

固定关节

固定关节是一种刚性约束组件,它能够完全限制两个碰撞体之间的相对运动。当两个物体通过固定关节连接后,它们会保持相对位置和方向不变,就像被刚性胶水粘在一起一样。

使用方法

  1. 选中目标实体,并在检查器中点击添加组件按钮,添加 FixedJoint 组件。

添加关节组件时,需要确保目标实体上已经挂载了一个动态碰撞器组件,如果你未添加,编辑器会自动为你添加一个动态碰撞器组件

  1. 通过组件属性 connectedCollider 设置连接的目标碰撞体(若不需要,可保持为 null,即连接到世界空间中的一点)。

如果连接的目标是碰撞体,则目标实体需要挂载碰撞体组件(动态碰撞器静态碰撞器角色控制器)。

  1. 根据需要设置关节的属性调整关节的表现,各属性的含义和作用请参考下文。

属性说明

碰撞体设置

  • connectedCollider
    指定要连接的目标碰撞体。当设置为 null 时,关节会连接到世界空间中的一个固定点。这允许你将物体固定在空间中的特定位置。

锚点设置

  • anchor
    在自身碰撞体上定义的锚点位置,使用局部坐标。这个点定义了关节的连接位置。

  • connectedAnchor
    定义连接点的位置。其含义取决于 connectedCollider 的设置:

    • 当 connectedCollider 为 null 时,表示世界空间中的绝对位置
    • 当 connectedCollider 不为 null 时,表示目标碰撞体局部空间中的相对位置
  • automaticConnectedAnchor
    是否自动计算 connectedAnchor 的值。启用时,系统会自动设置连接点以确保物体间的初始位置关系。如需手动精确控制连接点,可将此属性设为 false。

断裂阈值

  • breakForce
    关节能承受的最大力,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因受力而断裂。该属性可用于模拟物体间的可破坏连接。

  • breakTorque
    关节能承受的最大扭矩,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因扭转而断裂。与 breakForce 配合使用可以更真实地模拟连接的破坏过程。

质量计算干预

  • connectedMassScalemassScale
    分别用于调整连接碰撞体和自身碰撞体的质量影响。这些缩放值会影响关节约束的计算,允许你微调关节的物理行为。默认值为 1.0,增大数值会增加对应碰撞体在约束求解中的"重要性"。

脚本使用

基础使用

// 添加固定关节组件
const fixedJoint = entity.addComponent(FixedJoint);
 
// 设置连接的目标碰撞体
fixedJoint.connectedCollider = targetEntity.getComponent(Collider);
 
// 设置锚点
fixedJoint.anchor.setValue(0, 1, 0);
 
// 手动设置连接点
fixedJoint.automaticConnectedAnchor = false;
fixedJoint.connectedAnchor.setValue(0, 0, 0);

断裂阈值设置

// 设置断裂条件
fixedJoint.breakForce = 1000; // 断裂力
fixedJoint.breakTorque = 1000; // 断裂扭矩
 
// 设置为不可断裂
fixedJoint.breakForce = Infinity;
fixedJoint.breakTorque = Infinity;

质量计算影响

// 调整质量影响
fixedJoint.massScale = 1.5; // 增加自身的质量影响
fixedJoint.connectedMassScale = 0.5; // 减小连接对象的质量影响

这篇文档对您有帮助吗?