# RigidbodyConstraints

> Use these flags to constrain motion of Rigidbodies.

## Definition

* **Type:** Enum
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.PhysicsModule

```csharp
public enum RigidbodyConstraints
```

## Remarks

Additional Resources: [Rigidbody.constraints](/engine/6000.6/script-reference/unityengine/rigidbody/constraints.md).  This enables you to freeze positions and rotations on all axes.

## Examples

```csharp
//This example shows how RigidbodyConstraints is used to freeze the position and rotation of a Rigidbody in the z axis at start-up.
//It also shows what happens when these constraints are removed, when you press the space key
//Attach this to a GameObject with a Rigidbody to see it in action

using UnityEngine;
using UnityEngine.InputSystem;

public class RigidBodyConstraitsExample : MonoBehaviour
{
    Rigidbody m_Rigidbody;
    Vector3 m_ZAxis;

    void Start()
    {
        m_Rigidbody = GetComponent<Rigidbody>();
        //This locks the RigidBody so that it does not move or rotate in the z axis (can be seen in Inspector).
        m_Rigidbody.constraints = RigidbodyConstraints.FreezePositionZ | RigidbodyConstraints.FreezeRotationZ;
        //Set up vector for moving the Rigidbody in the z axis
        m_ZAxis = new Vector3(0, 0, 5);
    }

    void Update()
    {
        //Press space to remove the constraints on the RigidBody
        if (Keyboard.current.spaceKey.wasPressedThisFrame)
        {
            //Remove all constraints
            m_Rigidbody.constraints = RigidbodyConstraints.None;
        }

        //Press the right arrow key to move positively in the z axis if the constraints are removed
        if (Keyboard.current.rightArrowKey.wasPressedThisFrame)
        {
            //If the constraints are removed, the Rigidbody moves along the z axis
            //If the constraints are there, no movement occurs
            m_Rigidbody.velocity = m_ZAxis;
        }

        //Press the left arrow key to move negatively in the z axis if the constraints are removed
        if (Keyboard.current.leftArrowKey.wasPressedThisFrame)
        {
            m_Rigidbody.velocity = -m_ZAxis;
        }
    }
}
```

## Fields

| Value                                                                                                  | Description                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [FreezeAll](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezeall.md)             | Freeze rotation and motion along all axes. Equivalent of RigidbodyConstraints.FreezePosition \| RigidbodyConstraints.FreezeRotation.                                |
| [FreezePosition](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezeposition.md)   | Freeze motion along all axes. Equivalent of RigidbodyConstraints.FreezePositionX \| RigidbodyConstraints.FreezePositionY \| RigidbodyConstraints.FreezePositionZ.   |
| [FreezePositionX](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezepositionx.md) | Freeze motion along the X-axis. Limits motion to the YZ plane only.                                                                                                 |
| [FreezePositionY](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezepositiony.md) | Freeze motion along the Y-axis. Limits motion to the XZ plane only.                                                                                                 |
| [FreezePositionZ](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezepositionz.md) | Freeze motion along the Z-axis. Limits motion to the XY plane only.                                                                                                 |
| [FreezeRotation](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezerotation.md)   | Freeze rotation along all axes. Equivalent of RigidbodyConstraints.FreezeRotationX \| RigidbodyConstraints.FreezeRotationY \| RigidbodyConstraints.FreezeRotationZ. |
| [FreezeRotationX](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezerotationx.md) | Freeze rotation along the X-axis.                                                                                                                                   |
| [FreezeRotationY](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezerotationy.md) | Freeze rotation along the Y-axis.                                                                                                                                   |
| [FreezeRotationZ](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/freezerotationz.md) | Freeze rotation along the Z-axis.                                                                                                                                   |
| [None](/engine/6000.6/script-reference/unityengine/rigidbodyconstraints/none.md)                       | No constraints.                                                                                                                                                     |
