summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-06-23 07:02:16 +0800
committerchai <chaifix@163.com>2022-06-23 07:02:16 +0800
commit10d011d06c8838c91435615b577f36cc893c2f9a (patch)
treebe7be9054c05cd898de48296650ee13e6b344e56 /Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
parentbd7fe7bd341f6d3e929a4a9118efdd52a0da2275 (diff)
* animation
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs39
1 files changed, 22 insertions, 17 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
index 529cd2f5..ac416acb 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs
@@ -149,16 +149,11 @@ public class UnitAnimation : UnitComponent
/// <param name="animState"></param>
/// <param name="layerIndex"></param>
/// <param name="normalizedTime"></param>
- public void Play(string animState, int layerIndex = 0, float normalizedTime = float.NegativeInfinity)
+ public void Play(string targetAction, float normalizedTime = float.NegativeInfinity)
{
- //AnimatorLayerInfo layer = this.layers[layerIndex];
- //if (layer == null)
- // return;
- //layer.OnPlay(animState, normalizedTime);
+ m_CurrentAction = targetAction;
- m_CurrentAction = animState;
-
- m_Animator.Play(animState, layerIndex, normalizedTime);
+ m_Animator.Play(targetAction, 0, normalizedTime);
m_TimelineEventProxy.ResetPrevAnimationData();
UnitRootMotion rm = m_Owner.GetComponent<UnitRootMotion>();
@@ -176,16 +171,26 @@ public class UnitAnimation : UnitComponent
/// <param name="layerIndex"></param>
/// <param name="normalizedTimeOffset"></param>
/// <param name="normalizedTransitionTime"></param>
- public void CrossFade(string 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, normalizedTransitionDuration, normalizedTimeOffset, normalizedTransitionTime);
-
- m_CurrentAction = animState;
+ public void CrossFade(string targetAction, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f)
+ {
+ TransitionData transition = m_ActionData.GetTransitionData(m_CurrentAction, targetAction);
+ if(transition != null)
+ {
+ if(transition.type == TransitionData.TransitionType.NormalizedTime)
+ {
+ m_Animator.CrossFade(targetAction, transition.duration, 0, normalizedTimeOffset, normalizedTransitionTime);
+ }
+ else if(transition.type == TransitionData.TransitionType.FixedTime)
+ {
+ m_Animator.CrossFadeInFixedTime(targetAction, transition.duration, 0, normalizedTimeOffset, normalizedTransitionTime);
+ }
+ }
+ else
+ {
+ m_Animator.CrossFade(targetAction, normalizedTransitionDuration, 0, normalizedTimeOffset, normalizedTransitionTime);
+ }
+ m_CurrentAction = targetAction;
- m_Animator.CrossFade(animState.ToString(), normalizedTransitionDuration, layerIndex, normalizedTimeOffset, normalizedTransitionTime);
m_TimelineEventProxy.ResetPrevAnimationData();
UnitRootMotion rm = m_Owner.GetComponent<UnitRootMotion>();