Montage Play node fires however the animation does not change at all

Hello, I have created an animation blueprint and I want to blend two animations. My end goal is my character to be able to move and display a hit reaction in case something hits him.

So far, I have created a Blend Space 1D to handle the idle, walk and run animations which works fine. Then, I created a new Slot inside the DefaultGroup of my animations, named UpperSlot and a new montage (which is assigned to the mentioned slot) that contains the GetHit animation sequence. However, I noticed that even if the node Montage Play fires, the animation of my character does not change. What have I missed? I iterated through everything again and again but I think that something is missing. Below you will find screenshots from my project.

Screenshot of my AnimGraph:

Screenshot of my EventGraph (I simplified it’s logic in order to determine what’s going on. As you can see the montage play is firing):

Screenshot of my State Machine:

Screenshot of my melee_GetHit Montage:

Screenshot of the Idle/Walk/Run state:

I already checked that all my animations have the same skeleton.

Thank you in advance,

Orfeas

The way you are firing your montage isn’t going to work, you need to fire it from the characterBP or another BP and get the anim instance to fire it like this example from a characterBP:

Hello, thanks for your answer. I’ve tried your solution before posting my question and it didn’t seem to work. Just to clarify, my Animation Blueprint is based on a custom c++ class which is based on the UAnimInstance class. There, I’ve had a C++ function which contains the logic you’ve shown on your picture and it didn’t work.

My C++ logic:

if(GetHitMontage && !Montage_IsPlaying(GetHitMontage))
	{
		GLog->Log("Playing get hit montage");
		Montage_Play(GetHitMontage);
	}

When a collision happens the GLog function fires just fine, however the montage doesn’t play.

Thank you,

-Orfeas

Edit: The GetHitMontage is a UAnimMontage* and I’ve included it in the default values through the Blueprint editor

I do have assigned the correct anim blueprint generated class into the character’s blueprint. The Character Speed variable is updated using C++ code and the blendspace responsible for the idle/walk/run works fine so I believe it’s not my logic’s fault.

Edit: It seems like that I can’t get any anim montage to play at all. Even if I strip down all the blending my anim montage will fire but the animation will not change.

-Orfeas

To test if it may be something going on with the custom class have you tried using the standard animBP setup? Is your character set to use the custom animBP and do all the other anims play normally?

Remove or disconnect the nodes from the event blueprint update node in the event graph that are running the check each frame. Then see if the montage fires when called or instead of checking if it is playing call the play montage to play it directly like in the BP I posted without any checks

So I created a new project and replicated my bug. The cause was that in the node Layered blend per bone inside the Anim Graph I forgot to include the Bone Name. After writing the desired bone name the animations are firing!

1 Like

Thank you! I had a similar problem while retargeting shootergame animations. This field still had the bone name from the original skeleton and not the new skeleton. The tricky part for me was is that the animation played fine in the editor but not during game play.