- Home /
Mecanim. Change state under parameter condition problem.
Hi everyone. I have a specific problem. I change my character states by some buttons in the game. I have problem with changing it's states. In the first version there were two states IDLE and WALK. I created two parameters for the animator (booleans: walk and idle). And here is the key part: I also made a transition from "any action" state to IDLE under condition: idle s true. Also i made conditions from IDLE to WALK state when walk parameter is true and from WALK to IDLE when idle param is true. That worked when I was changing these parameters values in scripts but... it was always triggering IDLE thanks to that transition from any state to idle. The result was like trying to play the first frame of idle all the time. When I removed that transition it doesn't start to play idle animation, so it doesn't change it's state even if I change the propper parameters in scripts. Why is that happening? In the moment when I change these bool parameters it just enters a null state:
NullReferenceException: (null) UnityEditor.SerializedObject..ctor (UnityEngine.Object obj) (at C:/BuildAgent/work/7535de4ca26c26ac/Editor/MonoGenerated/Editor/SerializedPropertyBindings.cs:60) UnityEditor.Graphs.AnimationStateMachine.TransitionInspector.SetTransitionToInspect (UnityEditorInternal.Transition transition) (at C:/BuildAgent/work/7535de4ca26c26ac/Editor/Graphs/UnityEditor.Graphs/AnimationStateMachine/TransitionInspector.cs:171) UnityEditor.Graphs.AnimationStateMachine.TransitionInspector.OnEnable () (at C:/BuildAgent/work/7535de4ca26c26ac/Editor/Graphs/UnityEditor.Graphs/AnimationStateMachine/TransitionInspector.cs:94)
Answer by TonyLi · Jun 22, 2013 at 01:20 AM
Transitions from Any State are re-entrant, which means that it will trigger over and over as long as the condition holds true. To fix your issue, as soon as you trigger the transition, clear the idle parameter. Look at any of the example scripts in the Mecanim Example Scenes project that you can download for free from the Asset Store. You can just copy what those scripts do.