Why is my Animation Montage not being played?

You need to assign a name to the Slot Name, such as fullbody.

Simplest route:
Then in your AnimBP hook up a slot node, name it fullbody, and wire it in between your locomotion blendspace and the pose.

4 Likes

Hello, I’m working with an Animation Montage for the main character of a project. I’m extending here from the SideScroller BP sample and using the included Hero mesh and skeleton.

The problem is that the animation montage, called in the character blueprint you can check below, is not played, although when using a breakpoint to see if it’s processed ingame it actually is (when pressing the jump key, as desired). The “Mesh” reference there is to the skeletal mesh component of the character. So my guess is that the problem has something to do with the Animation Montage editor, so I’ve brought a capture of that too.

Do you know what could be preventing the montage to be played?

Thanks for the information. I’ve given the slot a name but I don’t fully understand what to do now in the Animation Blueprint, could you provide more info, please?

1 Like

wire the state machine to the left input of the fullbody slot.

This is just a simple setup to get it to work. There are tutorials on setting up a cache for the slot and all sorts of things, like blending the slots.

1 Like

Thanks for the information, I named the slot in an incorrect animation montage and because of that it was not working. Now is working fine just passing the state machine to the slot and that to the final pose. This is solved.

You may be constantly restarting the Montage with the press down, should have a branch that checks and makes sure it’s not allready playing before you tell it to play. But still, you should still see something with that.

Where is the Locamotion Blendspace? I don’t see that in your AnimGraph.

Currently there’s no Blendspace going on, what I have now is similar to the image above, but the state machine connects to the slot and the slot to the final pose, that’s giving a pretty nice result, however there’s an instant in which I guess animations from both sides (slot and default state machine) want to play at the same time and gives a strange result. I’ll take a look at documentation to improve that.

There is a node, Playing Montage. Check that first, and make sure it’s false before you call the Play Montage node.

Thanks for all the help, here I post what I’ve set up following your instructions, however apparently it isn’t doing any effects yet. As Branch can’t be used in te main AnimGraph I’ve set the flow control in the place of the State Machine (Default) where it checks wether to go from Idle to JumpStart, I’ve put it there because the anim montage I’ve set up is, I guess, conflicting with a jump animation of the State Machine (it processes the animation, but there’s a weird leg movement).

Do you know why it’s not working? Do I need to set an equivalent to an event to call “Montage Is Playing”?

That node just checks if the montage is allready playing, it would get added in to the way you had it before. Move that stuff to the EventGraph on the ANimBlueprint and you can use branch, it doesn’t belong on the AnimGraph.

It should get your InputAction Jump as it’s input, branch the Palying Montage Node against false, if true then wire into the Play Montage Node.

How can I use “InputAction Jump” from the Animation Blueprint’s EventGraph? It’s not available and a Custom event doesn’t seem to work neither.

I’m not familiar with that template. Someone else may need to chime in.

I’m not sure why it’s not available there. I used a Blueprint Interface to send events from a Behavior Tree Node to the AnimationBlueprint. You should be able to add an interface and send the event that way.

And here’s a tutorial video (expects you already have a montage with slot set to DefaultGroup.UpperBody): - YouTube

1 Like

Thank you!

I wanted to post another use case here in case someone is looking for different functionality…

If you’re using a skeletal mesh that doesn’t have an AnimBP (ie a non-character skeletal mesh), you can still play a montage, but not using the Play Montage node. You need to use “Play Animation” instead. This will also take a Montage as the animation type to play. Just make sure your mesh is set to “Use Anim Asset” and turn off the “Playing” and “Looping” values which you will obviously control with the Play Animation node. You can also use “Get Play Length” from your montage to see the total length of the montage so that you can correctly trigger events to happen after the montage completes. The nice thing is that if you use an animation (or multiple animations) that’s set to a different play rate than 1.0, it will calculate this correctly with the Get Play Length node provided you don’t change the rate of the montage itself.

3 Likes