Download

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:
95c28cd66a8f0c75c6ab99f6144aef2a3b69cb9d.png

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.
f9147f6b783005bd80049fef17b12ba8be1e50fd.png

This is the transition from IdleLanding to Idle, as it appears in the first image of the state machine.
transitionfalse.png

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

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.
5b28afaf730e0301b3b7269e8eb8d5627465bacb.png

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.

I don’t see how it would be unless it’s a bug . I have over 15 states in mine and it works fine . More than likely it is a problem with you’re transition rules somewhere .

Have you switched the bp to debug mode and followed the state executions flow to see what is going on?

Also if you are expecting help at least post a screenshot or more helpful a video as trying to help someone based of a short written description is in most cases impossible to do and you will be lucky to get any answers.

Anyway like I said debug the bp and see at which point the flow execution stops or gets stuck and thend you should be able to pinpoint the problem

I have debugged the blueprint, and nothing that makes sense has come out of that. I will try to add pictures soon.

-Update: Pictures added

Change the transition rules.

From idle jump to idle landing . Right click and type ratio . Then get the ratio of animation playing < 0.1 float attach to can enter transition .

One trick I learnt you don’t even need to use a jump bool . There is a function provided by unreal already in the character movement component called isFalling which returns true if the character is in the air . So I use this instead to transition into jump . Another bonus of this is it is also automatically replicated so no need to call rpc events to replicate the jumping animation either .

So change idle to idle jump transition rule to isInAir node then plug this into can enter transition . So this basically says if the player is not on the ground transition from idle To jump

Then from idle landing to idle do isInAir not node and plug it into transition rule

I’m not at computer now but I can post screenshots later if my explanation is unclear .

The transition from idle jump to idle landing is not the one that breaks. Also, I only use a jump bool to initiate the jump animation. That means that the player pressed the button. I am using IsFalling to tell when the character has landed.
I completely understand what you’re saying, and I think I have a version of what you are doing.

Here’s the thing: If I change transition for IdleLanding to Idle, so that it checks for anything then the transition for Idle to IdleJump stops working. if the transition from IdleLanding to Idle is set to always false then the transition for Idle to IdleJump works.

You’re logic is wrong and the state machine is getting confused/stuck which you would be able to see if you debugged it properly like i said earlier .

If you make the changes I said it will work .

Why ask for help.if you’re just going to argue the answer without trying it ??

I’m home in an hour I’ll show you then

I will try whatever you suggest, and if it works then that would be great.
My theory at this point is that my blueprint is bugged. I am making an exact copy of an animation blueprint from a previous game I made, that I am rewriting in c++. The same thing worked in the old project’s animation blueprint.
Thanks for the help.