Part of the
character-movement skill. The skill links here when your agent needs the detail.is_on_floor() jump feels stiff
and unforgiving. These four additions are what separate a prototype from a game
that feels good. Add them in this order; each is independent.
Coyote time
Let the player jump for a few frames AFTER walking off a ledge. Without it, jumps near edges feel like the game ate the input.Jump buffering
If the player presses jump a few frames BEFORE landing, remember it and fire on touchdown. Without it, fast players feel like jumps get dropped.Variable jump height
Tap = short hop, hold = full jump. Cut upward velocity when the button releases.Asymmetric gravity (fall faster than you rise)
A heavier fall gravity is the single biggest feel upgrade. Rising floaty, falling snappy reads as responsive.One-way platforms
Use aCollisionPolygon2D/CollisionShape2D on a platform with
one_way_collision = true in the platform’s collision shape. Drop through by
briefly disabling the player’s collision with that layer, or move the player to a
lower collision layer while move_down is held.
Tuning starting points
Never ship default gravity 980 with a -350 jump and call it done - that is the
“why does my jump feel bad” default. Tune fall_multiplier first.
Source:
library/skills/character-movement/references/platformer-feel.md, rendered from summer-engine@4.3.0 on npm.
