summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit/Components
diff options
context:
space:
mode:
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs18
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/PCAnimation.cs44
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs29
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/PCState_States.cs2
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);