Player moves freely in 2D space with no forced scroll; camera follows player position.
A CharacterBody2D driven by move_and_slide(), with a Camera2D child that follows it through the world.
Top-down free movement: read an input vector, set velocity, slide. No gravity, no forced scroll — the player owns where they go.
var dir = Input.get_vector("left","right","up","down")
velocity = dir * SPEED
move_and_slide()Parent it to the player so the view follows automatically. Enable position smoothing for a soft trail instead of a locked lock-on.
# On the Camera2D child of the player
position_smoothing_enabled = true
position_smoothing_speed = 5.0The body's footprint. move_and_slide() resolves it against walls so free movement still respects the world geometry.
# Attached as a child of CharacterBody2D;
# set its shape (e.g. a CircleShape2D) in the editor.In short: CharacterBody2D with move_and_slide(); Camera2D following player
57 catalogued game(s) use this mechanic, spanning 1986–1996.
▶ Explore Free 2D Movement interactively — see every game + the Godot system