Quick answer: Set center_of_mass_mode = COM_MODE_CUSTOM and lower center_of_mass to a negative Y. Or widen the base collision shape so the COM stays over the support polygon.

Here is how to fix Godot 4 RigidBody3D objects that fall over too easily. Mass alone does not determine stability; geometry and center of mass do.

The Symptom

A 100kg statue tips over from a small bump. A 1kg bowling pin requires force to tip. Mass scaling did not help.

What Causes This

Tall + narrow geometry. COM high; small angle tips.

COM at body center. Default COM = body center. Real-world heavy bases (statues with stone plinths) have COM low.

Inertia from physics shape. Inertia tensor derives from collision shape; long thin shapes pivot easily.

The Fix

Step 1: Lower the center of mass.

extends RigidBody3D

func _ready():
    center_of_mass_mode = RigidBody3D.CENTER_OF_MASS_MODE_CUSTOM
    center_of_mass = Vector3(0, -0.5, 0)

Negative Y puts the effective mass below the geometric center; the body resists tipping like a weighted base.

Step 2: Add a wide base collision.

CollisionShape3D (BoxShape3D, half-extents 1, 0.1, 1)   # wide base
CollisionShape3D (CapsuleShape3D, height 2, radius 0.3) # body

Wider support polygon increases tip-over angle.

Step 3: Constrain rotation if appropriate.

axis_lock_angular_x = true
axis_lock_angular_z = true

For NPCs that should never fall over, lock pitch and roll.

Step 4: Tune angular damping. Higher angular_damp resists rotation; combined with low COM, very stable.

Step 5: Ballast trick. Add an invisible heavy child collision at the base. Even without overriding COM, the physics calculates COM weighted by collision shape volume + density.

“Center of mass low. Wide base. Lock axes for NPCs. Heavy stays put.”

Related Issues

For pickup spinning, see 3D Pickup Spin. For RigidBody2D sleep, see Sleep Wake.

Lower COM. Wider base. Lock axes when needed. No more tip-overs.