How to Make a Dash System in UE5 Blueprints
Dash is the feel-multiplier of action games: a burst of velocity in the input direction, a cooldown so it’s a decision, and just enough polish (trail, sound, brief i-frames) to feel earned. In Blueprints it’s a compact, satisfying graph.
What it’s made of
Variables
DashStrength float (1500–3000 range feels right for most character scales), DashCooldown float, and a bCanDash bool.
Events
An Enhanced Input action (IA_Dash) triggers it; a timer re-arms bCanDash after the cooldown.
The logic
On input: Branch on bCanDash. Take Get Last Input Vector (fall back to actor forward when idle), Normalize, multiply by DashStrength, and feed Launch Character with XY Override so the burst replaces momentum instead of stacking on it. Clear bCanDash, start the cooldown timer, and drive the UI cooldown from the same timer.
Key nodes you’ll wire
The mistake that breaks it
Launching along the camera or actor forward only — a dash that ignores the movement input direction feels wrong the first time a player dashes while strafing.
New to how Blueprint systems fit together? Read the anatomy of a Blueprint system first.
Or skip the wiring — generate it
BlueprintStudio builds this system from a plain-language prompt — the right nodes, exec and data pins wired, defaults set — and tells you whether it is ready to paste or what to set up first. The prompt is prefilled:
Build “Dash System” in BlueprintStudioPrompt variations to try
Paste it into your Blueprint, or apply it with the free Cosindra desktop app (Windows & macOS).
Common questions
What does XY Override on Launch Character actually do?
It makes the launch velocity replace the character’s current horizontal velocity instead of adding to it. Without it, dashing at full sprint stacks DashStrength on top of sprint speed, so dash distance depends on how fast you were already moving. With it, every dash covers the same ground — which is what makes a cooldown ability feel fair.
How do I put a cooldown on a Blueprint ability?
Gate the input with a Branch on bCanDash, set it false on use, and re-arm it with Set Timer by Event after DashCooldown seconds. Keep the returned handle: Get Timer Remaining Time by Handle divided by DashCooldown drives a radial cooldown material or progress bar for free. A Delay node works too, but a timer handle is queryable and cancelable.
Can players dash in the air, but only once until they land?
Add a bHasAirDashed bool next to bCanDash. In the dash input, when Get Character Movement → Is Falling returns true, also Branch on bHasAirDashed and set it after launching; Event On Landed clears it. Keeping the air flag separate from the cooldown flag means a ground dash taken just before a ledge doesn’t eat the air dash too.