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.