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/UnitMotion.cs51
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs2
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()