diff options
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
3 files changed, 46 insertions, 9 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs index 5836abac..ffd89a88 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs @@ -236,13 +236,50 @@ public class UnitMotion : UnitComponent #region 播放动作,对外屏蔽Animator - /// <summary> - /// 过渡到某个类型的动作 - /// </summary> - /// <param name="animType"></param> - /// <param name="normalizedTransitionDuration"></param> - /// <param name="normalizedTimeOffset"></param> - /// <param name="normalizedTransitionTime"></param> + /// <summary> + /// 用trigger跳转动作 + /// </summary> + /// <param name="animType"></param> + public void Trigger(EAnimationType animType) + { + if (!m_MotionData.HasMotionAnimationType(animType)) + return; + + MotionData motion = m_MotionData.GetMotionDataByAnimationType(animType); + if (motion == null) + return; + + string stateName = motion.animatorState.ToString(); + bool overrideAnim = SyncOverrideAnim(stateName, motion.animationData.animationPath); + if (!overrideAnim) + return; + + string trigger = "To" + stateName; + m_Animator.SetTrigger(trigger); + } + + public void Trigger(int targetMotionId) + { + MotionData motion = m_MotionData.GetMotionDataById(targetMotionId); + if (motion == null) + return; + + string stateName = motion.animatorState.ToString(); + bool overrideAnim = SyncOverrideAnim(stateName, motion.animationData.animationPath); + if (!overrideAnim) + return; + + string trigger = "To" + stateName; + m_Animator.SetTrigger(trigger); + } + + /// <summary> + /// 过渡到某个类型的动作 + /// </summary> + /// <param name="animType"></param> + /// <param name="normalizedTransitionDuration"></param> + /// <param name="normalizedTimeOffset"></param> + /// <param name="normalizedTransitionTime"></param> public void CrossFade(EAnimationType animType, float normalizedTransitionDuration, float normalizedTimeOffset = float.NegativeInfinity, float normalizedTransitionTime = 0.0f) { if (!m_MotionData.HasMotionAnimationType(animType)) diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs index 0aab3c51..aa238da7 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs @@ -18,7 +18,7 @@ namespace UnitStates.Common public override void OnEnter(IStateParam param) { - m_Motion.CrossFade(EAnimationType.Idle, 1f); + m_Motion.Trigger(EAnimationType.Idle); } public override void OnExit() diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs index 6354af59..439d5c80 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs @@ -18,7 +18,7 @@ namespace UnitStates.Common public override void OnEnter(IStateParam param) { - m_Motion.CrossFade(EAnimationType.Move, 1f); + m_Motion.Trigger(EAnimationType.Move); } public override void OnExit() |