Physics MomentumTraversal

Player movement uses accumulated velocity that persists between frames; intentional momentum management is a core skill.

Sonic-style momentum: speed built rolling down the slope carries the hero up the far side, overshooting where a stop-on-a-dime character would halt.

How physics momentum works in Godot

CharacterBody2Dnode

Kinematic body for player-driven movement. You own the velocity vector and ramp it yourself — that acceleration/friction ramp is the momentum the player feels.

# Ease toward target speed instead of snapping — the ramp IS the momentum
velocity.x = move_toward(velocity.x, dir * SPEED, ACCEL * delta)
move_and_slide()

RigidBody2Dnode

Full physics body. The engine integrates momentum for you; you only apply forces and impulses and let mass, gravity, and damping carry the motion.

# You push; the solver integrates the momentum
apply_central_impulse(Vector2(THRUST, 0))   # one-off kick
constant_force = Vector2(0, GRAVITY)         # sustained push

PhysicsMaterialnode

A resource you attach to a body or collider to tune how momentum behaves on contact — friction (slipperiness) and bounce (elastic rebound).

var mat := PhysicsMaterial.new()
mat.friction = 0.2   # low = slippery, ice-like
mat.bounce = 0.8     # high = elastic rebound
$RigidBody2D.physics_material_override = mat

In short: Velocity accumulation in _physics_process(); no snap-to-grid; inertia requires deliberate deceleration input

Retro games that use physics momentum

30 catalogued game(s) use this mechanic, spanning 1986–1996.

Related traversal mechanics

▶ Explore Physics Momentum interactively — see every game + the Godot system