Quick answer: linear_damp = 0. Set velocity in _physics_process or _integrate_forces. Confirm gravity_scale non-zero for falling.
You set linear_velocity to (10, 0, 0). Body inches forward. Linear damp eats the velocity each step.
The Fix
extends RigidBody3D
func _ready():
linear_damp = 0.0 # default 0.1 ok; 1+ kills
angular_damp = 0.5
gravity_scale = 1.0
func _physics_process(_d):
linear_velocity = Vector3(10, 0, 0) # sticks per tick
Or use _integrate_forces for full PhysicsDirectBodyState control. Damp at 0 means no friction; combine with collisions for natural slowing.
Verifying
Body travels at intended speed. Walk back damp to 0.5: gradual deceleration. Set damp to 5: barely moves — reproduces the bug.
“Damp low. Physics tick. Velocity holds.”
Related Issues
For Area2D fast mover, see CCD. For client prediction, see prediction.
Damp 0. Tick set. Body moves.