From a5c191cf74238084d9bd9f805b4b6755f70d956d Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 1 Sep 2021 08:30:42 +0800 Subject: =?UTF-8?q?*=E6=94=B9=E5=8F=98=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/UnitAnimation/MonsterAnimation.cs | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs (limited to 'Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs') diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs new file mode 100644 index 00000000..26361098 --- /dev/null +++ b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs @@ -0,0 +1,110 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MonsterAnimation : UnitAnimation +{ + public enum ELayer + { + Basic = 0, + + Count, + } + + // 动作名,和animator里的state对应 + public enum EAnimState + { + // layer 0 + Idle = 0, + Move, + Jump, + Hit, + Attack, + Rise, + Stinger, + Turn, + Landing, + + AirAttack0, + AirAttack1, + AirAttack2, + AirAttack3, + + Attack0, + Attack1, + Attack2, + Attack3, + } + + public override void Initialize() + { + base.Initialize(); + + m_Animator = this.m_Owner.unitObj.GetComponent(); + + m_Animator.speed = 0; + + m_LayerInfo = new AnimatorLayerInfo[2]; + m_LayerInfo[0] = new AnimatorLayerInfo(this, m_Animator, (int)ELayer.Basic); + //m_LayerInfo[1] = new AnimatorLayerInfo(this, m_Animator, ELayer.Attack); + + if (m_Animator == null) + { + LogHelper.LogError("没有挂Animator组件"); + } + + } + + public override void OnUpdate() + { + base.OnUpdate(); + + UpdateLayer(); + UpdateAnimation(); + UpdateRootMotion(); + } + + void UpdateLayer() + { + m_LayerInfo[0].OnUpdate(); + return; + for (int i = 0; i < m_LayerInfo.Length; ++i) + { + m_LayerInfo[i].OnUpdate(); + } + } + + void UpdateAnimation() + { + m_Animator.speed = 1; + m_Animator.Update(Time.deltaTime); + m_Animator.speed = 0; + } + + void UpdateRootMotion() + { + m_Owner.unitRootMotion.UpdateRootMotion(); + } + + public void AnimIdle() + { + m_Animator.CrossFade("Idle", 0.2f, 0); + } + + public void AnimHitLight() + { + m_Animator.Play("HitLight", 0, 0); + //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); + } + public void AnimHitAir() + { + m_Animator.Play("HitAir", 0, 0); + //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); + } + + public void AnimRise() + { + m_Animator.CrossFade("Rise", 0); + } + +} -- cgit v1.1-26-g67d0 From e7c9ddfae65a93336d414c2af90effd1d8bada82 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 1 Sep 2021 09:49:36 +0800 Subject: *misc --- .../Components/UnitAnimation/MonsterAnimation.cs | 48 ++++++++++++---------- 1 file changed, 26 insertions(+), 22 deletions(-) (limited to 'Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs') diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs index 26361098..d7138516 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs @@ -18,23 +18,11 @@ public class MonsterAnimation : UnitAnimation Idle = 0, Move, Jump, - Hit, - Attack, - Rise, - Stinger, - Turn, - Landing, - - AirAttack0, - AirAttack1, - AirAttack2, - AirAttack3, - - Attack0, - Attack1, - Attack2, - Attack3, - } + + HitLight, + HitAir, + Rise, + } public override void Initialize() { @@ -45,7 +33,7 @@ public class MonsterAnimation : UnitAnimation m_Animator.speed = 0; m_LayerInfo = new AnimatorLayerInfo[2]; - m_LayerInfo[0] = new AnimatorLayerInfo(this, m_Animator, (int)ELayer.Basic); + m_LayerInfo[0] = new AnimatorLayerInfo(this, m_Animator, (int)ELayer.Basic, ELayer.Basic.ToString()); //m_LayerInfo[1] = new AnimatorLayerInfo(this, m_Animator, ELayer.Attack); if (m_Animator == null) @@ -88,23 +76,39 @@ public class MonsterAnimation : UnitAnimation public void AnimIdle() { - m_Animator.CrossFade("Idle", 0.2f, 0); + this.CrossFade(EAnimState.Idle, 0.2f, 0); } public void AnimHitLight() { - m_Animator.Play("HitLight", 0, 0); + this.Play(EAnimState.HitLight, 0, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } public void AnimHitAir() { - m_Animator.Play("HitAir", 0, 0); + this.Play(EAnimState.HitAir, 0, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } public void AnimRise() { - m_Animator.CrossFade("Rise", 0); + this.CrossFade(EAnimState.Rise, 0); } + private void Play(EAnimState animState, int layerIndex = 0, float normalizedTime = float.NegativeInfinity) + { + AnimatorLayerInfo layer = this.layers[layerIndex]; + if (layer == null) + return; + layer.OnPlay(animState.ToString(), normalizedTime); + } + + public void CrossFade(EAnimState animState, float normalizedTransitionDuration, int layerIndex = 0, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) + { + AnimatorLayerInfo layer = this.layers[layerIndex]; + if (layer == null) + return; + layer.OnCrossFade(animState.ToString(), normalizedTransitionDuration, normalizedTimeOffset, normalizedTransitionTime); + } + } -- cgit v1.1-26-g67d0