diff options
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
4 files changed, 56 insertions, 37 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs index 9c9ba8e3..0600bf60 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs @@ -12,7 +12,7 @@ public class MonsterAnimation : UnitAnimation } // 动作名,和animator里的state对应 - public enum EAnimState + public enum EActionState { // layer 0 Idle = 0, @@ -64,42 +64,42 @@ public class MonsterAnimation : UnitAnimation public void AnimIdle() { - this.CrossFade(EAnimState.Idle, 0.2f, 0); + this.CrossFade(EActionState.Idle, 0.2f, 0); } public void AnimHitLight() { - this.Play(EAnimState.HitLight, 0); + this.Play(EActionState.HitLight, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } public void AnimHitAir() { - this.Play(EAnimState.HitAir, 0); + this.Play(EActionState.HitAir, 0); //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } public void AnimHitInAir()
{
- this.Play(EAnimState.HitInAir, 0); + this.Play(EActionState.HitInAir, 0); } public void AnimHitBackHeavy()
{
- this.Play(EAnimState.HitBackHeavy, 0); + this.Play(EActionState.HitBackHeavy, 0); } public void AnimRise() { - this.CrossFade(EAnimState.Rise, 0); + this.CrossFade(EActionState.Rise, 0); } - private void Play(EAnimState animState, float normalizedTime = float.NegativeInfinity) + private void Play(EActionState animState, float normalizedTime = float.NegativeInfinity) {
base.Play(animState.ToString(), normalizedTime); } - public void CrossFade(EAnimState animState, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) + public void CrossFade(EActionState animState, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) {
base.CrossFade(animState.ToString(), normalizedTransitionDuration, normalizedTimeOffset, normalizedTransitionTime); } diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs index fa0f58fa..fc0dafec 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs @@ -22,7 +22,7 @@ public class PCAnimation : UnitAnimation // 动作名,和animator里的state对应 - public enum EAnimState + public enum EActionState { // layer 0 Idle = 0, @@ -151,27 +151,27 @@ public class PCAnimation : UnitAnimation public void AnimIdle() { - CrossFade(EAnimState.Idle, 0.2f, 0); + CrossFade(EActionState.Idle, 0.2f, 0); } public void AnimMove() { - CrossFade(EAnimState.Move, 0.01f, 0); + CrossFade(EActionState.Move, 0.01f, 0); } public void AnimJump() { - CrossFade(EAnimState.Jump, 0.01f); + CrossFade(EActionState.Jump, 0.01f); } public void AnimAirAttack(int id) { m_Owner.unitCollider.OnAnimationChange(); - EAnimState state = EAnimState.AirAttack0; - if (id == 1) state = EAnimState.AirAttack1; - else if (id == 2) state = EAnimState.AirAttack2; - else if (id == 3) state = EAnimState.AirAttack3;
- else if (id == 4) state = EAnimState.AirAttack4;
+ EActionState state = EActionState.AirAttack0; + if (id == 1) state = EActionState.AirAttack1; + else if (id == 2) state = EActionState.AirAttack2; + else if (id == 3) state = EActionState.AirAttack3;
+ else if (id == 4) state = EActionState.AirAttack4;
AnimationData data = GetAnimationDataOfState(state.ToString());
Debug.Assert(data != null);
@@ -183,7 +183,7 @@ public class PCAnimation : UnitAnimation public void AnimAttackToAir(float offset)
{
m_Owner.unitCollider.OnAnimationChange();
- Play(EAnimState.AttackToAir, offset);
+ Play(EActionState.AttackToAir, offset);
} public void AnimAttack(int id) @@ -192,50 +192,50 @@ public class PCAnimation : UnitAnimation switch (id) { case 0: - CrossFade(EAnimState.Attack0, 0.02f); + CrossFade(EActionState.Attack0, 0.02f); break; case 1: - CrossFade(EAnimState.Attack1, 0.02f); + CrossFade(EActionState.Attack1, 0.02f); break; case 2: - CrossFade(EAnimState.Attack2, 0.02f); + CrossFade(EActionState.Attack2, 0.02f); break; case 3: - CrossFade(EAnimState.Attack3, 0.02f); + CrossFade(EActionState.Attack3, 0.02f); break; } } public void AnimAirDash() { - AnimationData data = GetAnimationDataOfState(EAnimState.AirDash.ToString()); - if (stateInfo.IsName(EAnimState.AirDash.ToString())) + AnimationData data = GetAnimationDataOfState(EActionState.AirDash.ToString()); + if (stateInfo.IsName(EActionState.AirDash.ToString())) { float offset = data.GetProperty(EAnimationProperty.ComboTimeOffset, 0); - this.Play(EAnimState.AirDash, offset); + this.Play(EActionState.AirDash, offset); } else { - CrossFade(EAnimState.AirDash, 0.02f); + CrossFade(EActionState.AirDash, 0.02f); } } public void AnimLanding() { - CrossFade(EAnimState.Landing, 0.05f); + CrossFade(EActionState.Landing, 0.05f); } public void AnimLandingGround() { - CrossFade(EAnimState.LandingGround, 0.00f); + CrossFade(EActionState.LandingGround, 0.00f); } - private void Play(EAnimState animState, float normalizedTime = float.NegativeInfinity) + private void Play(EActionState animState, float normalizedTime = float.NegativeInfinity) { base.Play(animState.ToString(), normalizedTime); } - private void CrossFade(EAnimState animState, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) + private void CrossFade(EActionState animState, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) { base.CrossFade(animState.ToString(), normalizedTransitionDuration, normalizedTimeOffset, normalizedTransitionTime); } diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs index ac416acb..45276edc 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs @@ -19,7 +19,20 @@ public class UnitAnimation : UnitComponent // 当前动作,和AnimatorState不同,忽略过渡,即时切换
protected string m_CurrentAction = "Idle"; - public string currentAction { get { return m_CurrentAction; } } + public string currentAction
+ {
+ get
+ {
+ return m_CurrentAction;
+ }
+ set
+ {
+ m_CurrentAction = value;
+ m_Dirty = true;
+ }
+ } + + private bool m_Dirty = true; public Animator animator { get { return m_Animator; } } protected Animator m_Animator;
@@ -33,11 +46,17 @@ public class UnitAnimation : UnitComponent }
// 当前动作的AnimationData
+ private AnimationData m_CachedAnimationData;
public AnimationData animationData
{
get
{
- return m_ActionData.GetAnimationData(currentAction);
+ if (m_Dirty)
+ {
+ m_CachedAnimationData = m_ActionData.GetAnimationData(currentAction);
+ m_Dirty = false;
+ }
+ return m_CachedAnimationData;
}
}
@@ -151,7 +170,7 @@ public class UnitAnimation : UnitComponent /// <param name="normalizedTime"></param>
public void Play(string targetAction, float normalizedTime = float.NegativeInfinity) {
- m_CurrentAction = targetAction;
+ currentAction = targetAction;
m_Animator.Play(targetAction, 0, normalizedTime);
m_TimelineEventProxy.ResetPrevAnimationData();
@@ -173,7 +192,7 @@ public class UnitAnimation : UnitComponent /// <param name="normalizedTransitionTime"></param>
public void CrossFade(string targetAction, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f)
{
- TransitionData transition = m_ActionData.GetTransitionData(m_CurrentAction, targetAction);
+ TransitionData transition = m_ActionData.GetTransitionData(currentAction, targetAction);
if(transition != null)
{
if(transition.type == TransitionData.TransitionType.NormalizedTime)
@@ -189,7 +208,7 @@ public class UnitAnimation : UnitComponent {
m_Animator.CrossFade(targetAction, normalizedTransitionDuration, 0, normalizedTimeOffset, normalizedTransitionTime);
}
- m_CurrentAction = targetAction;
+ currentAction = targetAction;
m_TimelineEventProxy.ResetPrevAnimationData();
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/PCState_States.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/PCState_States.cs index 051f1ee8..a65ad23e 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitState/PCState_States.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitState/PCState_States.cs @@ -93,7 +93,7 @@ public partial class PCState : UnitState if (m_Owner.isTowardRight && !param.isRight || !m_Owner.isTowardRight && param.isRight) { - //m_Owner.pcAnimation.Play(UnitAnimation.EAnimState.Turn); + //m_Owner.pcAnimation.Play(UnitAnimation.EActionState.Turn); //yield return new WaitForActionReachEnd(m_Owner.pcAnimation); //if (param.isRight) // m_Owner.transform.rotation = Quaternion.Euler(0, 0, 0); |