Sync Walk Animation to Movement Speed?

I’m trying to set up a realistically-scaled movement system, using the default third person animations provided by Epic, for a game prototype I’m working on. I’m stuck at the point where I have the desired walking speed set for the character, but I can’t figure out how to sync the walking animation to that movement speed so it eliminates foot-sliding. I’ve tried getting the speed from the character and using it to drive the blend space/animation (I’ve tried it both ways) and tried adding a ‘play rate’ node to it as well, but I still get the foot sliding problem.

To clarify:

  • I have my character walk speed set to 1.38 m/s.
  • The walking animation I’m using seems to have been created at somewhere around 3 m/s.
  • Slowing down the animation speed in the blend space editor makes the character look like it’s moving in slow motion.
  • Driving the walking animation speed through the character’s movement speed still seems to cause foot-sliding.
  • Driving the animation play rate through the character’s movement speed doesn’t seem to have any different effect than driving it with movement speed.
  • Driving it with both seems to have no effect, either.

Is there a way to make the animation properly sync up with the movement speed, without having to take the animation into a 3D package and re-time it, or whatever? Will using root motion do anything to help, possibly?

Using root motion the motion data is the speed rate so with a scale of 1-1 it’s feet will always be on the ground. If you need it to go faster or slower change the scale.

Since root motion controls speed as well as direction you should not scale speed rate but instead set it up with an 8-way controller input. IF you use the typical W to move forward then bag it goes from the idle state and blends into the walk forward state.

This answer is for anyone else who comes across this when searching for this problem:

I found that my animations and walk speed where out of sync when crouching. It was to do with the X and Y axis values in my 2DBlendspace (because my crouch walk was a 2D blendspace)

TL;DR

Change the X and Y values in your 2D/1D Blendspace then tweak some animation timing.
Run speed: 600
Crouch speed: 250

My run was -1 to 1 on X and Y and that was perfectly in sync with walk speed of 600
My crouch is now -0.41 to 0.41 on X and Y, you do the maths.
After this I played around with animation timing by ~0.4 (faster in my case) and then it was fully in sync.

Hopefully this helped someone.

Here is an example of my standard “Run” blendspace. Note, for my crouch it is the same but -1 is -0.41 and 1 is 0.41.