Completely different solution, to tackle the same issue, make the animated character feel grounded:
Distance matching use the distance from a specified point in space to define which animation to play and at which keyframe:
I’m 50cm from my starting point, and started running in the right direction: i should play start right animation and should be at the 0.35seconds keyframe.
Strength of this approach is that you can move the capsule as you want, and the animation of the character will adapt in consequence.
With motion matching there’s no notion of point in space, it uses a user input (move forward right at half speed), parameters for how ‘sharp’ you want the animation to follow user input, and a large library of animation with rootmotion, doing every movement possible.
For each keyframe the motion matching will decide to which other animation to blend to given the user input direction/strenght. There’s no AnimationBlueprint StateMachine in this approach if you will.
Let’s say you have a single animation with rootmotion which last 15minutes and during which you do every move possible. At 7min30 you moved forward right,motionmatching will play in loop those couple keyframes of forward right moving, then you move backward. Motion matching wil find the keyframe in the 15min animation at which point you walked backward and transition seamlessly at the keyframe it defines as optimal, from your move forward right to move backward.