> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/godotengine/godot/llms.txt
> Use this file to discover all available pages before exploring further.

# RigidBody3D

# RigidBody3D

**Inherits:** PhysicsBody3D \< CollisionObject3D \< Node3D \< Node \< Object

## Description

A 3D physics body that is moved by a physics simulation. RigidBody3D implements full 3D physics. It cannot be controlled directly; instead, you must apply forces to it.

## Properties

<ResponseField name="mass" type="float" default="1.0">
  The body's mass.
</ResponseField>

<ResponseField name="linear_velocity" type="Vector3" default="Vector3(0, 0, 0)">
  The body's linear velocity.
</ResponseField>

<ResponseField name="angular_velocity" type="Vector3" default="Vector3(0, 0, 0)">
  The RigidBody3D's rotational velocity in radians per second.
</ResponseField>

<ResponseField name="gravity_scale" type="float" default="1.0">
  Multiplies the gravity applied to the body.
</ResponseField>

<ResponseField name="freeze" type="bool" default="false">
  If true, the body is frozen. Gravity and forces are not applied.
</ResponseField>

## Methods

### apply\_central\_impulse

```gdscript theme={null}
void apply_central_impulse(impulse: Vector3)
```

Applies a directional impulse without affecting rotation.

### apply\_impulse

```gdscript theme={null}
void apply_impulse(impulse: Vector3, position: Vector3 = Vector3(0, 0, 0))
```

Applies a positioned impulse to the body.

### apply\_force

```gdscript theme={null}
void apply_force(force: Vector3, position: Vector3 = Vector3(0, 0, 0))
```

Applies a positioned force to the body.

### apply\_torque

```gdscript theme={null}
void apply_torque(torque: Vector3)
```

Applies a rotational force without affecting position.

## Signals

### body\_entered(body: Node)

Emitted when a body enters into contact with this one.

### body\_exited(body: Node)

Emitted when a body exits contact with this one.

## Example Usage

<Tabs>
  <Tab title="GDScript">
    ```gdscript theme={null}
    extends RigidBody3D

    func _ready():
        mass = 5.0
        gravity_scale = 2.0

    func explode():
        # Apply explosion force upward
        apply_central_impulse(Vector3(0, 1000, 0))

    func push_forward():
        # Apply force in forward direction
        var forward = -global_transform.basis.z
        apply_force(forward * 500)
    ```
  </Tab>

  <Tab title="C#">
    ```csharp theme={null}
    public partial class MyRigidBody : RigidBody3D
    {
        public override void _Ready()
        {
            Mass = 5.0f;
            GravityScale = 2.0f;
        }

        public void Explode()
        {
            ApplyCentralImpulse(new Vector3(0, 1000, 0));
        }
    }
    ```
  </Tab>
</Tabs>
