Quick answer: Godot 2D character sliding down walls instantly with no friction? CharacterBody2D doesn’t use PhysicsMaterial — apply your own gravity dampening when is_on_wall() is true.
A platformer character touches a wall and slides down at full gravity speed. CharacterBody2D ignores physics materials — wall slide needs custom velocity scaling.
CharacterBody Has No Friction
Friction on a PhysicsMaterial applies to RigidBody2D, not CharacterBody2D. The latter is fully kinematic — you set velocity directly each frame.
Scale Vertical Velocity on Wall
if is_on_wall() and velocity.y > 0:
velocity.y = min(velocity.y, WALL_SLIDE_MAX_SPEED)Caps the descent while wall-attached. Combine with input-held check for grab-and-slide vs friction.
Coyote Frames
Allow a few frames of wall-cling after leaving the wall so wall-jump feels responsive. Track wall_coyote_timer and decrement each frame.
Verifying
Pressing into a wall while falling reduces descent speed to the configured slide cap. Releasing the wall resumes normal gravity.
“CharacterBody2D ignores PhysicsMaterial. Wall slide needs explicit velocity capping.”
Expose WALL_SLIDE_MAX_SPEED as an inspector property — you’ll tune it per character / per game-feel iteration constantly.