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.