Exemple #1
0
        public static void Awake(this AnimatorComponent self)
        {
            Animator animator = self.Parent.GetComponent <GameObjectComponent>().GameObject.GetComponent <Animator>();

            if (animator == null)
            {
                return;
            }

            if (animator.runtimeAnimatorController == null)
            {
                return;
            }

            if (animator.runtimeAnimatorController.animationClips == null)
            {
                return;
            }
            self.Animator = animator;
            foreach (AnimationClip animationClip in animator.runtimeAnimatorController.animationClips)
            {
                self.animationClips[animationClip.name] = animationClip;
            }
            foreach (AnimatorControllerParameter animatorControllerParameter in animator.parameters)
            {
                self.Parameter.Add(animatorControllerParameter.name);
            }
        }
Exemple #2
0
        public static void Update(this AnimatorComponent self)
        {
            if (self.isStop)
            {
                return;
            }

            if (self.MotionType == MotionType.None)
            {
                return;
            }

            try
            {
                self.Animator.SetFloat("MotionSpeed", self.MontionSpeed);

                self.Animator.SetTrigger(self.MotionType.ToString());

                self.MontionSpeed = 1;
                self.MotionType   = MotionType.None;
            }
            catch (Exception ex)
            {
                throw new Exception($"动作播放失败: {self.MotionType}", ex);
            }
        }
Exemple #3
0
        public static void SetIntValue(this AnimatorComponent self, string name, int value)
        {
            if (!self.HasParameter(name))
            {
                return;
            }

            self.Animator.SetInteger(name, value);
        }
Exemple #4
0
        public static void SetTrigger(this AnimatorComponent self, string name)
        {
            if (!self.HasParameter(name))
            {
                return;
            }

            self.Animator.SetTrigger(name);
        }
Exemple #5
0
        public static void SetBoolValue(this AnimatorComponent self, string name, bool state)
        {
            if (!self.HasParameter(name))
            {
                return;
            }

            self.Animator.SetBool(name, state);
        }
Exemple #6
0
        public static void SetFloatValue(this AnimatorComponent self, string name, float state)
        {
            if (!self.HasParameter(name))
            {
                return;
            }

            self.Animator.SetFloat(name, state);
        }
Exemple #7
0
 public static void Play(this AnimatorComponent self, MotionType motionType, float motionSpeed = 1f)
 {
     if (!self.HasParameter(motionType.ToString()))
     {
         return;
     }
     self.MotionType   = motionType;
     self.MontionSpeed = motionSpeed;
 }
Exemple #8
0
        public static float AnimationTime(this AnimatorComponent self, MotionType motionType)
        {
            AnimationClip animationClip;

            if (!self.animationClips.TryGetValue(motionType.ToString(), out animationClip))
            {
                throw new Exception($"找不到该动作: {motionType}");
            }
            return(animationClip.length);
        }
Exemple #9
0
        public static void RunAnimator(this AnimatorComponent self)
        {
            if (!self.isStop)
            {
                return;
            }

            self.isStop = false;

            if (self.Animator == null)
            {
                return;
            }
            self.Animator.speed = self.stopSpeed;
        }
Exemple #10
0
        public static void PauseAnimator(this AnimatorComponent self)
        {
            if (self.isStop)
            {
                return;
            }
            self.isStop = true;

            if (self.Animator == null)
            {
                return;
            }
            self.stopSpeed      = self.Animator.speed;
            self.Animator.speed = 0;
        }
Exemple #11
0
        public static void PlayInTime(this AnimatorComponent self, MotionType motionType, float time)
        {
            AnimationClip animationClip;

            if (!self.animationClips.TryGetValue(motionType.ToString(), out animationClip))
            {
                throw new Exception($"找不到该动作: {motionType}");
            }

            float motionSpeed = animationClip.length / time;

            if (motionSpeed < 0.01f || motionSpeed > 1000f)
            {
                Log.Error($"motionSpeed数值异常, {motionSpeed}, 此动作跳过");
                return;
            }
            self.MotionType   = motionType;
            self.MontionSpeed = motionSpeed;
        }
Exemple #12
0
        public static void Awake(this AnimatorComponent self)
        {
            Animator animator = self.Parent.GetComponent <GameObjectComponent>().GameObject.GetComponent(typeof(Animator)) as Animator;

            if (animator == null)
            {
                return;
            }

            if (animator.runtimeAnimatorController == null)
            {
                return;
            }

            if (animator.runtimeAnimatorController.animationClips == null)
            {
                return;
            }
            self.Animator = animator;

            int   count = animator.GetanimationClipsLength();
            Array animationClipArray = animator.runtimeAnimatorController.animationClips;               // animator.runtimeAnimatorController.animationClips;

            for (int i = 0; i < count; ++i)
            {
                AnimationClip animationClip = (AnimationClip)animationClipArray.GetValue(i);
                self.animationClips[animationClip.name] = animationClip;
            }

            count = animator.GetAnimatorControllerParameterLength();
            Array parametersArray = animator.parameters;

            for (int i = 0; i < count; ++i)
            {
                AnimatorControllerParameter animatorControllerParameter = (AnimatorControllerParameter)parametersArray.GetValue(i);
                self.Parameter.Add(animatorControllerParameter.name);
            }
        }
Exemple #13
0
 public static bool HasParameter(this AnimatorComponent self, string parameter)
 {
     return(self.Parameter.Contains(parameter));
 }
Exemple #14
0
 public static void ResetAnimatorSpeed(this AnimatorComponent self)
 {
     self.Animator.speed = self.stopSpeed;
 }
Exemple #15
0
 public static void SetAnimatorSpeed(this AnimatorComponent self, float speed)
 {
     self.stopSpeed      = self.Animator.speed;
     self.Animator.speed = speed;
 }