How to Develop a Game
Joint
PublishDate: 2025-06-01 | CreateDate: 2025-06-01 | LastModify: 2025-06-01 | Creator:ljf12825

Joint(关节)系统是物理系统的一部分,用于将两个Rigidbody通过某种方式连接起来,从而形成如机械臂、门铰链、车轮悬挂等复杂的物理结构

常见Joint组件(3D)

Joint 类型功能简介应用场景
Fixed Joint固定连接两个刚体(类似粘在一起)粘接物体,如断裂木桥
Hinge Joint限制物体绕一个轴旋转门铰链、车轮
Spring Joint使用弹簧连接两个物体弹簧、吊绳
Character Joint模拟生物骨骼的铰接关节角色 ragdoll 系统
Configurable Joint高级自定义关节,可设置自由度自定义复杂机械结构

使用Joint基本原则

示例:Hinge Joint(门铰链)

HingeJoint joint = gameObject.AddComponent<HingeJoint>();
joint.connectedBody = otherRigidbody;
joint.useLimits = true;

JointLimits limits = joint.limits;
limits.min = 0;
limits.max = 90;
joint.limits = limits;

示例:Spring Joint(弹簧连接)

SpringJoint spring = gameObject.AddComponent<SpringJoint>();
spring.connectedBody = targetRigidbody;
spring.spring = 100f; //弹力系数
spring.damper = 5f; //阻尼
spring.minDistance = 0.5f;
spring.maxDistance = 2f;

Joint API

class Joint(基类)

常用属性/方法功能说明适用场景
connectedBody要连接的 Rigidbody所有 Joint 都继承自它
anchor / connectedAnchor关节连接点(本地坐标)精确控制连接位置
breakForce / breakTorque关节断裂阈值适用于破坏物体
enableCollision是否允许连接物体间碰撞物理交互
autoConfigureConnectedAnchor是否自动计算锚点初学者友好
OnJointBreak(float force)关节断裂事件检测爆破等效果
currentForce / currentTorque当前受力/扭矩(只读)运行时调试

HingeJoint(铰链关节)

属性功能
useLimits是否启用旋转角限制
limits设置最小/最大角度(JointLimits
useMotor是否启用电机
motor电机参数(JointMotor
useSpring是否启用旋转弹簧
spring弹簧参数(JointSpring

SpringJoint(弹簧关节)

属性功能
spring弹簧力常数(刚度)
damper阻尼系数(摩擦)
minDistance / maxDistance弹簧收缩/伸展范围

FixedJoint(固定关节)

属性功能
无额外属性(仅继承自 Joint完全粘连连接,像焊死一样

CharacterJoint(角色关节)

属性功能
swingAxis冲击方向(用于摇摆)
lowTwistLimit / highTwistLimit扭转角度限制
swing1Limit / swing2Limit摇摆角度限制

ConfigurableJoint(高级自定义关节)

属性功能
xMotion / yMotion / zMotion平移自由度控制
angularXMotion / Y / Z旋转自由度控制
targetPosition / targetRotation驱动目标
xDrive / yDrive / zDrive平移驱动
angularXDrive / YZDrive旋转驱动
secondaryAxis定义自定义轴方向
projectionMode矛盾时修正方式(位置/旋转)