Optionaldynamictrue (default) → dynamic, simulated. false → immovable static body.
Ignored when motion is set.
OptionalmotionMotion type. Defaults to dynamic (or static when dynamic: false).
kinematic bodies are moved by script (velocity/position) and push
dynamics but are not pushed back.
OptionallayerCollision layer(s) this body belongs to (bit flags, see CollisionLayer).
Default: World for static bodies, Prop for moving bodies.
OptionalmaskCollision layer(s) this body collides with. Default: All.
OptionalisWhen true the body is a sensor (trigger): it reports overlaps via a SensorCallbacks but generates no collision response.
OptionalrestitutionBounciness 0..1. Default 0.2.
OptionalfrictionSurface friction 0..1. Default Jolt default (~0.2).
OptionallinearInitial linear velocity (world units/sec).
OptionalgravityMultiplier on gravity (1 = normal, 0 = floats).
OptionalmassOverride the body mass (kg). 0/undefined → derive from shape volume ×
Jolt's default density (~1000 kg/m³), which makes a 1 m cube ~1000 kg.
OptionalmotionContinuous collision detection mode. 'discrete' (default) is the cheap
per-step check; 'linear-cast' sweeps the body along its motion each step so
a fast body can't tunnel through thin colliders (e.g. one-sided terrain mesh).
Use it for small/fast dynamics over thin static geometry.
OptionaldoubleFor mesh colliders only: build the triangle mesh double-sided by also
emitting each triangle with reversed winding. Jolt's MeshShape collides
one-sided (front/CCW face only), so a level whose triangles aren't all wound
toward the player has fall-through gaps. Godot's trimesh collider is
double-sided, so set this for faithfully-ported level geometry. Doubles the
collision triangle count (per unique mesh — still cheap vs. a merged soup).
OptionalsensorSensor overlap callbacks. Implies isSensor when present.
Per-body tuning shared by every shape factory.