Beispiel #1
0
        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")
            });
        }