- Home /
Animator.Play not working when in Sub-State Machine
I'm facing a bit of a dilemna. The following code is being used in my animator wrapper to set a specific frame.
animator.speed = 1f;
// Set & Push Animator Params
animator.SetFloat("exampleParameter", 0.5f);
animator.Update(0f);
// Set Animation Frame
AnimatorStateInfo asi = animator.GetCurrentAnimatorStateInfo(0);
animator.Play(asi.fullPathHash, 0, animPlaybackTime);
animator.Update(0f);
animator.speed = 0f;
The problem I'm having is that in an animator where the current state is within a sub-state machine, the playback frame isn't being correctly set, whereas in another object where the current state is not in a sub-state machine, it's working just fine.
I've checked the values in the debugger, and animPlaybackTime
is being correctly set, yet asi.normalizedTime
never moves from 0f...
Update: Animator.SetTime() doesn't appear to work properly either!
Additionally, I found that if the Sub-State $$anonymous$$achine, and the State within it have the same name (in this case "Walk"), asi.fullPathHash
ignores the Sub-State $$anonymous$$achine and assigns it a hash equal to "BaseLayer.Walk", rather than "BaseLayer.Walk.Walk".
(If the names don't match, it assigns a hash including the Sub-State $$anonymous$$achine. Eg. "BaseLayer.WalkState$$anonymous$$achine.Walk")
Answer by Melodatron · Jan 24, 2017 at 04:32 PM
So it turns out that the problem involved the way I was using transitioning from Any State into the state machines, but now I have another even bigger problem...
Your answer
Follow this Question
Related Questions
How do I make the transition between two states in the "Animator" happen instantly? 3 Answers
Can the mecanim animators Controller var be set in code? 1 Answer
Accessing AnimationState in Animator 0 Answers
How to stop mesh disappearing during Animator state transition blend time? 1 Answer
Animation events firing all at once in mirrored blend tree 1 Answer