Quick answer: Floor Snap Length 8 (or step height). floor_constant_speed = true. floor_max_angle 45+.

Player runs over edge between slope and flat. Loses contact, brief airborne. Snap distance too small.

The Fix

extends CharacterBody2D

func _ready():
    floor_snap_length = 8.0
    floor_constant_speed = true
    floor_max_angle = deg_to_rad(50)
    floor_block_on_wall = true

func _physics_process(d):
    velocity.y += gravity * d
    move_and_slide()

Snap length lets the body stick to ground over small ledges. Constant speed avoids slowing on slope transitions.

Verifying

Run over slope-flat edge. Body stays grounded. Without snap: brief air time + bouncing.

“Snap. Constant speed. Glide.”

Related Issues

For RigidBody3D damp, see damp. For ShapeCast3D thin, see ShapeCast3D.

Snap holds. No air.