Problem with Root Motion on horse mounting/dismounting animations. Please help :)

I purchased a large horse/animation package specifically to help handle this part of my project called HorseAnimSetPro. The package is good and has tons of great assets and animations, but does not contain the animation blueprints, etc. I’ve done some light animation work, but I wouldn’t come close to calling myself proficient. I am, however, fairly decent with blueprints and at least familiar with animation state machines, so was hopeful I could figure it out.

I am currently not using root animation, though I know I need to be, but please bear with me.

I have it somewhat working. If, as the player character, I press the “E” button, I turn off collision for the character (mesh and capsule component), play the desired mounting animation and attach to the horse. At this stage, the animation looks great, and the ending pose is exactly as desired, though I will point out that in my case the root bone for the player character is at the bottom near the feet and to make this look as desired, I had to adjust the mounting point on the horse from on the horse’s spine to below inside the body of the horse. (See below for a picture of before and after adjusting mountpoint socket on horse as well as an end pose picture of player character once mounted. I’ve temporarily made the player character capsule component visible, if it helps.)

What you cannot see from the images is that, because of the lack of root motion, the capsule component for the character immediately teleports to the attach location but ignores the Z adjustment of the player mesh. I will get to this shortly.

Like mounting, the dismounting animation looks great, and if the player ended up where the animation does, I’d be in business. The player should end up just to the right and facing the horse’s body. However, because I am not using root motion, my capsule component does know where to go or how to orient itself. Instead, once the animation completes, my character is teleported to just behind but partially inside of the horse and facing forwards. This would match the last rotation of the collision component and move the location of it to just outside of the horse’s current capsule. (Picture below for reference.)

Obviously this won’t do, so I started trying to fix it. In my mount and dismount animations, I’ve enabled root motion with root lock to ref pose and am using normalized root motion scale. This alone changes nothing, so in my ThirdPersonAnimationBlueprint, I’ve also set the root motion mode to “Root Motion from Everything.” Because I also need the player character’s capsule component to follow on the Z axis, I set the character’s movement component movement mode to “Flying” just before the initial mounting animation plays. This improves the location and rotation of the capsule component immediately, but messes up the animations. The mounting animation now starts facing the wrong direction (the character faces away from the horse) and wrong position (the mount animation now has the player start with his hands in mid-air near the back of the horse.) It does play the exact same animation, but because of the weird starting position and rotation, the end result looks like this:

I’m reasonably confident that if the mounting animation can be fixed, the dismount would look perfect, as it appears to dismount from the precise location and rotation of where the mount ends up.

Does anyone have any insight on how to fix this? I’ve been trying for the past week and feel like I just keep trying the same things repeatedly. Any help is greatly appreciated.

I apologize for the length, but I know more information is only going to help.

Please don’t hesitate to ask for more info. I can try and get videos made, but am hoping I was clear enough that you get the idea of what’s going on.

Thanks in Advance!

  • TAW (Adam)
1 Like

You don’t need root motion for this.

On mount, set the character position to where it should be for the capsule to encompass him.

In my case the lowest point is calculated based on the staff height, since more or less that’s where the feet will be and it is the lowest point of the character.

The animation for mount is in 2 parts.

Part one is the animation that plays of climbing up the horse.
This has a floor level (root of the horse) as the ancor point, so that the hand, the foot, etc all match up correctly.

Part 2 is the snap in place that happens when you attach.

To get that, you know where the pelvis location will be based on the next animation. Or you can calculate it approximate on mount (which is what I do. Staff location plus capsule half height).

I use that to swap from the looping mount montage to the actual animation, so that it’s smooth.