Hey Was Wondering If Anyone Found Out How to do this in c++
I know it’s been years since this thread was active, but if anyone else stumbles across it looking for a solution, this might help.
This is essentially a rearranged version of the default UE5.7 Third Person movement input. The only real change is that I normalize the gamepad input vector before feeding it into Add Movement Input. This preserves full 360° movement while making the movement magnitude independent of how far the stick is pushed. At the same time, I calculate the original stick magnitude (Vector2D Length) and store it in a MovementMagnitude variable. That value (0-1) becomes my gait selector
In my Character Blueprint’s Event Graph, I compare MovementMagnitude against configurable thresholds. If it’s above my Walk Threshold, the character enters the Walking gait. If it’s above my Run Threshold, it switches to Running. Sprinting is handled separately with its own boolean so it overrides the normal gait logic. I also check the current gait before updating it so I’m not constantly setting the same state every frame.
The end result is exactly the movement style I was after:
- Slight stick movement = constant walking speed.
- Push the stick past a threshold = constant running speed.
- Full 360° analog movement (not limited to 8 directions).
- Thresholds are exposed as variables, so they’re easy to tweak without changing any Blueprint logic.
Hopefully this saves someone else the time! and let me know if anyone finds a better solution.

