Quick answer: Godot 4 setting RigidBody3D.mass at runtime; physics still uses previous mass for one tick? Mass change deferred - call_deferred or change before adding to scene.

Spawn a heavy crate; set mass = 100; first physics tick treats it as the default 1.0.

Set before add_child

crate.mass = 100
parent.add_child(crate)

Mass set before physics registers; first tick uses 100.

Or use call_deferred

Defers to end-of-frame; next physics tick reads new mass.

Audit spawn order

Property assignment after add_child = mid-frame state. Standardize order.

“Physics state init happens at child-add. Properties set after may lag.”

If physics behavior is wrong on first tick, the spawn order is the suspect.

Related reading