Animation blend time shouldn’t affect root motion, the later being functionality and the former being aesthetic. The result is that you are forced to choose between horrible looking blending or broken root motion.
There is no scenario where this is desirable or working as intended.
Sure, for my platformer there is ledge grabbing, where he hangs off the edge of a wall. Then there is a climb animation with root motion, it pushes him upwards → forwards → downwards to plant his feet on the ground when it completes.
If I have any blend out time, the root motion at the end is blended out causing him to not be pulled down at the end and the result is him flying upwards similar to a jump.
I’ve also pulled the root motion back so it moves him earlier than it should in the animation, giving 1.67 seconds after the root motion completes to use as blend out time, it’s a temporary and ugly solution and I really need 2-2.25 seconds to make the transition look good, but can’t because of this problem and would rather have the root motion complete with the animation as well.
I’ve got an email out to some of our engineers. I was able to reproduce this in Crocopede’s Ledge Climbing System project when adding a blend out to his montages. I’m basically talking to the engineers to see if this is an engine bug or if there is a content fix.
The weird thing is that in this example project, I was only adding a 0.25 blend out, but the root movement ends much earlier in the animation (kind of like your workaround). However in this project, it still breaks it.
It was confirmed from some of the other engineers that root motion should not be affected by blend out time, so your intuition is correct.
However, there is a bit of a quirk with this. When the Out Blend Time is hit, it effectively kills the animation. This means that depending on how you’re triggering your events for switching state, etc., you could be receiving those events earlier than you think.
Additionally, you can also help the blending a bit by changing the blend type for your AnimInstance to “Root Motion from Everything” instead of “Root Motion from Montages Only”. This option can be found by examining the Anim Graph of a given AnimBP.