Bug Report: Anim Blueprint State Machine breaks when adding new State

I have a state machine inside my Animation Blueprint that controls how my character moves. Everything was working fine until I had about 15 states, and after that the state machine begins to ignore my state transitions. I even tried removing conditions and setting the state transition to true by default, and it still does not enter the new state.

I tried separating out some of my states into a state machine that is nested inside the aforementioned state machine. The old states work, but the new ones still didn’t.
After that, I tried removing all the recently added states from the primary state machine.
I added a JumpStart state that transitions from idle, that worked. As soon as I added a JumpLand State that transitions back to Idle, the transition from Idle to JumpStart stopped working. Does anyone know how to fix this problem? It seems like my animation blueprint is extremely broken.

This is my state machine:


In the image above, I have set the transition from IdleLanding to Idle, to always be false, that is the only way the transition from Idle to IdleJump will continue to work.

This is the transition from Idle to IdleJump. In every picture of the state machine, IsJumping is always set to true.


The purpose of IsJumping is to detect when the player has pressed the jump button.

In the next image of the state machine, this is the transition for IdleLanding to Idle. It is set to always true.


Now, if I set that same transition (IdleLanding to Idle) to always be true (or any Boolean expression), the transition from Idle to IdleJump breaks. That is a totally separate transition.

I should also note that if I restart the editor, and then compile the animation blueprint, this works fine. As soon as I make any changes though, it breaks again until I restart.

Let me know if more info is needed, and thanks for reading.

Hi Sorrien,

I may have missed something, but what are the conditions for the IdleJump2IdleLanding transition?

I also may be able to debug this faster if you migrate your character to an example project and send it to me. You can upload to google drive, dropbox, etc and then PM me a download link on the forums.

I didn’t screenshot the transition from IdleJump to IdleLanding, because that hasn’t really broken, but that just checks the UE4 provided Boolean IsFalling. I can get you a GitHub link in the next couple of hours.

I don’t know if you saw my message before the forums blinked out, but I added you to my private repository on git. Just wanted to make sure I got through.

No worries. I added you to the private repository here: https://github.com/Sorrien/ShooterGame4.12

I saw the email, but it was too late by the time I saw it. When the forums come back online, can you post again here? My primary to-do list for answerhub is through the notification I get when you comment.

So, the reason I asked about the IdleJump2IdleLanding transition is because the condition you’ve set is always true unless you drop your character straight off of a ledge.

So what’s happening when you hit “Jump” is essentially it starts the transition to IdleJump, but no matter how long the transition is, it will evaluate all outgoing transitions from IdleJump. Because IsFalling is always false, IdleJump2IdleLanding will immediately start it’s own transition, but then IdleLanding2Idle is always true, so it does that transition. This all happens in one tick, so it always just loops right back around to the Idle State.

Does that make sense?

I figured out that jumping does not work well with root motion, and that the movement mode should be set to flying in order for root motion to affect the z axis. Thank you for helping me find my flaw.