private static void InitAnimationController(AnimationCollection animationCollection, GameObject warrior) { var animationController = new AnimationController(warrior); animationController.SetFloat("speed", 0f); animationController.SetBool("attacking", false); animationController.SetBool("jumping", false); warrior.Components.Add(animationController); var idle = new AnimationState(animationCollection.GetAnimation("Idle")); animationController.AddState(idle); var run = new AnimationState(animationCollection.GetAnimation("Run")); animationController.AddState(run); var jump = new AnimationState(animationCollection.GetAnimation("Jump")); animationController.AddState(jump); var attack = new AnimationState(animationCollection.GetAnimation("Attack1")); animationController.AddState(attack); idle.AddTransition(run, new Func <AnimationController, bool>[] { ctrl => ctrl.GetFloat("speed") > .1f }); idle.AddTransition(attack, new Func <AnimationController, bool>[] { ctrl => ctrl.GetBool("attacking") }); idle.AddTransition(jump, new Func <AnimationController, bool>[] { ctrl => ctrl.GetBool("jumping") }); run.AddTransition(idle, new Func <AnimationController, bool>[] { ctrl => ctrl.GetFloat("speed") < .1f }); run.AddTransition(attack, new Func <AnimationController, bool>[] { ctrl => ctrl.GetBool("attacking") }); attack.AddTransition(idle, new Func <AnimationController, bool>[] { ctrl => !ctrl.GetBool("attacking") }); jump.AddTransition(idle, new Func <AnimationController, bool>[] { ctrl => !ctrl.GetBool("jumping") }); }