Started playing with the Animator and found that transitions out of “Any State” often occur when I don’t want them to (because the state I’m transitioning into also qualifies as “any state”).
Found this post on the forums with an official reply.
AnimatorStateInfo nextState = animator.GetNextAnimatorStateInfo(0) ; // get next state on layer 0
if( nextState != null && nextState.name == "Base Layer.DeathState")
In my opinion, this is kind of klunky. Has a better way emerged since this post from 2012? Preferably, there will be a way that can be done within Animator.
What I found out that I could use for my purposes was to directly play that animation instead of turning a bool true.
So you should change “animator.SetBool(“DeahtBoolean”, true);” To
So you just dont use the “Any State” and does the same job.
Ok, the code posted by the Unity dev, that I reposted, is all kinds of broken / stale.
What I did was add an animation event on the first frame of the animation for the new state.
That event calls a function on that Animator’s object that makes the transition condition from AnyState untrue.
This is still kind of roundabout, but at least it works and seems relatively clean. Please post if you know of a better way.
Update: I stumbled upon the (apparently undocumented) Animator Parameter type “Trigger”, which seems to be a bool that sets itself false as soon as the transition occurs. This is the answer I was looking for.
You can now (Unity 4) use triggers to handle this sort of thing. A trigger acts similar to a boolean parameter except it is consumed by the transition (i.e. automatically set back to false).