Loading lessons...
Articulation Bodies
Articulation Bodies
Articulation Bodies are a newer, more physically accurate alternative to the classic Joint system for simulating robotic arms, procedural character control, and multi-link mechanical systems.
Articulation Body vs Rigidbody + Joints
| Feature | Rigidbody + Joints | Articulation Body |
|---|---|---|
| Accuracy | Can drift/jitter | Stable, no drift |
| Use case | Ragdolls, general physics | Robotics, motors, procedural IK |
| Drive type | Forces | Position/velocity drives |
| Hierarchy | Arbitrary | Parent-child hierarchy only |
Setting Up an Articulation Chain
- Create a hierarchy of GameObjects (Root > Link1 > Link2 ...).
- Add an Articulation Body component to each.
- The Root has no joint; child links define the joint between them and their parent.
Joint Types
Set the Articulation Joint Type on each non-root ArticulationBody:
- Fixed: No relative movement.
- Prismatic: Linear slide along one axis.
- Revolute: Rotation around one axis (like a hinge).
- Spherical: Rotation around all three axes (like a ball-socket joint).
Drives
Drives let you control joint motion with position or velocity targets:
using UnityEngine;
public class RobotArm : MonoBehaviour
{
[SerializeField] private ArticulationBody _joint;
void SetTargetAngle(float angleDegrees)
{
ArticulationDrive drive = _joint.xDrive;
drive.target = angleDegrees; // Target angle in degrees
drive.stiffness = 10000f; // Spring stiffness
drive.damping = 100f; // Damping to prevent oscillation
drive.forceLimit = float.MaxValue;
_joint.xDrive = drive;
}
}
Limits
Articulation Bodies support joint limits to prevent over-rotation:
ArticulationDrive drive = _joint.xDrive;
drive.lowerLimit = -90f; // Minimum angle
drive.upperLimit = 90f; // Maximum angle
_joint.xDrive = drive;
When to Use Articulation Bodies
- Robot simulations: Arms, grippers, conveyor belts.
- Procedural character control: Physically driven IK.
- Mechanical systems: Engines, gearboxes, doors with locks.
- NOT suitable for ragdolls (use classic Joints for those).
TL;DR
- Articulation Bodies create stable multi-link chains ideal for robotics and procedural mechanics.
- Define joint type (Revolute, Prismatic, Spherical) on each child link.
- Use ArticulationDrive with stiffness, damping, and target to control joint motion.
- Articulation Bodies are more accurate than Rigidbody+Joint for multi-joint chains.