固定关节是一种刚性约束组件,它能够完全限制两个碰撞体之间的相对运动。当两个物体通过固定关节连接后,它们会保持相对位置和方向不变,就像被刚性胶水粘在一起一样。
添加关节组件时,需要确保目标实体上已经挂载了一个动态碰撞器组件,如果你未添加,编辑器会自动为你添加一个动态碰撞器组件
。
anchor
在自身碰撞体上定义的锚点位置,使用局部坐标。这个点定义了关节的连接位置。
connectedAnchor
定义连接点的位置。其含义取决于 connectedCollider 的设置:
automaticConnectedAnchor
是否自动计算 connectedAnchor 的值。启用时,系统会自动设置连接点以确保物体间的初始位置关系。如需手动精确控制连接点,可将此属性设为 false。
breakForce
关节能承受的最大力,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因受力而断裂。该属性可用于模拟物体间的可破坏连接。
breakTorque
关节能承受的最大扭矩,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因扭转而断裂。与 breakForce 配合使用可以更真实地模拟连接的破坏过程。
// 添加固定关节组件
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; // 减小连接对象的质量影响