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")
{
animator.SetBool("DeahtBoolean", false);
}
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.
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).