More or less… Isn’t as good as i would like but decent enough for now.
CharacterMovement:
Max Acceleration 512
Braking Deceleration Walking to 1512
Rotation Rate Z=180
For the logic:
I call that function on tick to calculate Z rotation (after checking if movement input is >0).
This is the curve to set MaxYaw:
That DIrection variable is the one called in the AnimBP for the blendspaces along the speed.
The function called afterwards to set movement input:
As doplerwastaken said all animations are in the same blendspace. Horizontal Axis is -180 to 180.
Vertical is the usual idle at 0, 0 to sprint at max and whatever speeds in between.
Animations forward left and forward right at -45/45, all speeds except 0.
Turn in place 90 from -60/60 to -90/90, all speeds.
And turn in place 180 at -120/120, all speeds.
That’s the logic, the values work for me (for my only character as of right now at least) but needs a lot of test and repeat depending on the desired turn rate, which would need different values on the curve, different interpolation speed to calculate the direction, play rates for the animations, smoothing times for the blendspace, etc.
And for sure I’m open to any idea to improve it.