Category: 🚀 Motion
![]()
Attach two blocks together with a linear constraint and control the distance between them. Useful to make suspensions, pistons, springs, etc.
The Piston block creates a configurable linear (translation) link between two rigidbodies along its forward axis. Once placed inside a physical group and connected to another part via the Tag input, both parts become attached and slide along the joint axis.
Force, distance limit and outputs are not built-in: they are added as sub-blocks via the Inspector checkboxes (joint_piston, joint_piston_limit, joint_piston_output) that automatically attach to the Piston's panel.
For rotational constraints, use the Joint block instead.
| Name | Type | Description |
|---|---|---|
| Connected Block | Tag Input | Block or group attached to the piston. Will automatically become physical if no "Make Physical" block is used. Only one block or group can be connected at a time. |
| Name | Type | Description |
|---|---|---|
| Piston Size | Draggable part | Drag to resize the visual shaft of the piston. Only affects visuals, not the physics behavior. |
| Name | Type | Description |
|---|---|---|
| Force & Position | checkbox | When ON, spawns and attaches a joint_piston sub-block to drive the linear movement (spring, inertia, target position, target velocity). |
| Distance Limit | checkbox | When ON, spawns and attaches a joint_piston_limit sub-block to constrain the slide range. |
| Outputs | checkbox | When ON, spawns and attaches a joint_piston_output sub-block to emit current position and speed as jolts. |
| Hide Controller | checkbox | When ON, hides the player's controller model while grabbing the connected part. |
| Movement Strength | slider | How strongly the connected part follows the controller's position when grabbed (0-10). |
| Rotation Strength | slider | How strongly the connected part follows the controller's rotation when grabbed (0-10). |
| Lock Size | checkbox | Locks the resize handle so the visual shaft size cannot be changed. |