Unity Physics: Articulation Bodies

Jared Amlin
4 min readAug 30, 2024

When it comes to complex objects with moveable parts, Articulation Bodies provide a robust solution.

For this example, I will be working with this machine arm object.

In order for the articulation body components to work properly, your object needs a good hierarchy when it comes to parent and children object orientation.

The initial articulation body is placed on the base of the machine arm.

Enabling the Immoveable tick box will ensure that this base object stays exactly where it is now.

The next segment requires another articulation body component.

The Articulation Joint Type has options for Fixed (no movement), Prismatic (position movement along an axis), Revolute (rotation movement) and Spherical (anatomical joint, which allows two swings and one twist).

I want to be able to rotate the bottom object, so I select the Revolute option.

You can optionally clamp the rotation by setting Motion to Limited, and the assigning your Lower and Upper Limits.

I am leaving Motion at the default setting of Free, so the base can rotate 360 degrees on the Z axis (set in the Anchor Rotation selection).

The Drive Type determines what will move the object, be it Force or a Target value. By setting the Drive Type to Target, the object will always be rotated according to the Target value, which can be changed at runtime.

Manually changing the Target value in the inspector rotates the base to face that rotation value.

The next object will also need it’s articulation body component to work like a hinge joint.

The Anchor Rotation is set to 90 on the Y axis, to reflect the desired visual rotation of this joint. The Limited option is enabled and the Edit Joints button is used to set the upper and lower rotational limit.

Just like with the previous object, the Target is used with the Drive Type to move the arm back and forth.

This next object gets the same treatment with a hinge joint type of articulation body.

We now have more functional pieces!

The next two articulation bodies use a Fixed joint type, as I don’t want them to move or rotate.

The base of the claw here is given Free rotation.

Each claw can be rotated within the limits, as it is used to accomplish a remote controlled task.

I am sure you could imagine connecting the Target values to user input to get a fully functional robot arm!

Thanks for reading and happy articulating!

--

--

Jared Amlin

I am an artist and musician, that is currently diving headfirst into game development with C# and Unity3D.