弹性关节用于维持两个物体之间的距离约束,通过弹簧力和阻尼来控制物体间的相对运动。它可以设置最小和最大距离范围,并在物体超出范围时施加弹性约束力。
添加关节组件时,需要确保目标实体上已经挂载了一个 动态碰撞器组件
,如果你未添加,编辑器会自动为你添加一个动态碰撞器组件
。
如果连接的目标是碰撞体,则目标实体需要挂载碰撞体组件(动态碰撞器,静态碰撞器,角色控制器)。
anchor
在自身碰撞体上定义的锚点位置,使用局部坐标。这个点定义了关节的连接位置。
connectedAnchor
定义连接点的位置。其含义取决于 connectedCollider 的设置:
automaticConnectedAnchor
是否自动计算 connectedAnchor 的值。启用时,系统会自动设置连接点以确保物体间的初始位置关系。如需手动精确控制连接点,可将此属性设为 false。
minDistance
允许的最小距离。当物体间距离小于此值时,关节会施加推开力。
maxDistance
允许的最大距离。当物体间距离大于此值时,关节会施加拉近力。
tolerance
容差范围值,默认为 0.25。这个值决定了关节开始产生约束力的时机:
breakForce
关节能承受的最大力,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因受力而断裂。该属性可用于模拟物体间的可破坏连接。
breakTorque
关节能承受的最大扭矩,超过此值时关节会断裂。设置为 Infinity 表示关节永远不会因扭转而断裂。与 breakForce 配合使用可以更真实地模拟连接的破坏过程。
// 添加弹性关节组件
const springJoint = entity.addComponent(SpringJoint);
// 设置连接对象
springJoint.connectedCollider = targetEntity.getComponent(Collider);
// 设置距离范围
springJoint.minDistance = 1;
springJoint.maxDistance = 5;
// 配置弹簧属性
springJoint.stiffness = 50; // 弹簧刚度
springJoint.damping = 0.2; // 阻尼系数
// 设置容差
springJoint.tolerance = 0.25;