diff options
author | chai <chaifix@163.com> | 2021-08-02 18:58:01 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-08-02 18:58:01 +0800 |
commit | 4c362271f502b9999cd77e991271f16993d5c665 (patch) | |
tree | 7f4d1291457fafa54f06b59ff34c8fb6db9e0954 /Assets/Scripts/Unit | |
parent | 4f7fa7c6d5db44179b21dc17da0f7322efc4cb45 (diff) |
*mics
Diffstat (limited to 'Assets/Scripts/Unit')
-rw-r--r-- | Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs | 4 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Component/UnitAnimation.cs | 54 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Component/UnitState.cs | 27 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/UnitController.cs | 2 | ||||
-rw-r--r-- | Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs | 3 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitRootMotion.cs | 2 |
6 files changed, 33 insertions, 59 deletions
diff --git a/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs b/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs index 28ab8177..3f5d20d4 100644 --- a/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs +++ b/Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs @@ -16,7 +16,9 @@ public class WaitForActionReachEnd : IEnumerator public bool MoveNext() { - float normalTime = m_UnitAnimation.stateInfo.normalizedTime; + var stateInfo = m_UnitAnimation.stateInfo; + float normalTime = stateInfo.normalizedTime; + LogHelper.Log(stateInfo.loop.ToString()); return normalTime < 1f; } diff --git a/Assets/Scripts/Unit/Component/UnitAnimation.cs b/Assets/Scripts/Unit/Component/UnitAnimation.cs index 7ebd780c..de3d4cce 100644 --- a/Assets/Scripts/Unit/Component/UnitAnimation.cs +++ b/Assets/Scripts/Unit/Component/UnitAnimation.cs @@ -2,38 +2,11 @@ using System.Collections.Generic;
using UnityEngine;
-// 播放动画,执行帧事件
+// 控制动画播放,执行帧事件
[DisallowMultipleComponent]
public class UnitAnimation : UnitComponent
{
- // animator trigger值,切换动画
- public enum ETrigger
- {
- Nein = 0,
-
- ToIdle ,
- ToMove ,
- ToSpawn ,
-
- ToDie ,
- ToHitAir ,
- ToHitAirAir,
-
- ToHitKnockDown,
-
- ToJump,
- ToWalk,
-
- ToAttack,
-
- ToRise,
-
- ToStinger,
-
- ToTurn,
- }
-
- // animator状态
+ // 动画
public enum EAnimState
{
Idle,
@@ -46,15 +19,11 @@ public class UnitAnimation : UnitComponent Turn,
}
- public Dictionary<EAnimState, ETrigger> triggers = new Dictionary<EAnimState, ETrigger>() {
- { EAnimState.Idle, ETrigger.ToIdle},
- { EAnimState.Move, ETrigger.ToMove},
- { EAnimState.Jump, ETrigger.ToJump},
- { EAnimState.Attack, ETrigger.ToAttack},
- { EAnimState.Rise, ETrigger.ToRise},
- { EAnimState.Stinger, ETrigger.ToStinger},
- { EAnimState.Turn , ETrigger.ToTurn},
- };
+ public enum ELayer
+ {
+ Basic = 0,
+ Attack = 1,
+ }
public Animator animator { get { return m_Animator; } }
private Animator m_Animator;
@@ -89,12 +58,15 @@ public class UnitAnimation : UnitComponent }
}
+ public string GetTrigger(EAnimState state)
+ {
+ return "To" + state.ToString();
+ }
+
public void Play(EAnimState state)
{
m_CurState = state;
- ETrigger trigger = triggers[state];
- string toAnim = trigger.ToString();
- m_Animator.SetTrigger(toAnim);
+ m_Animator.SetTrigger(GetTrigger(state));
m_Animator.speed = 0;
m_PlaybackTime = 0;
m_Owner.unitRootMotion.Reset();
diff --git a/Assets/Scripts/Unit/Component/UnitState.cs b/Assets/Scripts/Unit/Component/UnitState.cs index 500096d3..587c2f33 100644 --- a/Assets/Scripts/Unit/Component/UnitState.cs +++ b/Assets/Scripts/Unit/Component/UnitState.cs @@ -1,4 +1,6 @@ -using System.Collections;
+using System;
+using System.Reflection;
+using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -34,7 +36,6 @@ public class UnitState : UnitComponent public EUnitState CurrentState { get { return m_State; } }
private delegate void ExitStateHandler(EUnitState nextState);
- private delegate void EnterStateHandler(EUnitState prevState);
private Dictionary<EUnitState, ExitStateHandler> m_ExitStateHandlerDic = new Dictionary<EUnitState, ExitStateHandler>();
@@ -71,10 +72,6 @@ public class UnitState : UnitComponent void InitState()
{
- m_ExitStateHandlerDic.Add(EUnitState.Idle, OnIdleExit);
- m_ExitStateHandlerDic.Add(EUnitState.Move, OnMoveExit);
- m_ExitStateHandlerDic.Add(EUnitState.Skill, OnSkillExit);
- m_ExitStateHandlerDic.Add(EUnitState.Jump, OnJumpExit);
}
public void ChangeState<T>(EUnitState nextState, T param = default, bool bForce = false)
@@ -87,11 +84,17 @@ public class UnitState : UnitComponent StopAllCoroutines();
EUnitState prevState = m_State;
- if (m_ExitStateHandlerDic.ContainsKey(m_State))
- {
- m_ExitStateHandlerDic[m_State](nextState);
- }
- m_State = nextState;
+ string methodFunc = "On" + m_State.ToString() + "Exit";
+ MethodInfo exitMethod = GetType().GetMethod(methodFunc, BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(EUnitState) }, null);
+ if(exitMethod != null)
+ {
+ exitMethod.Invoke(this, new object[] { nextState });
+ }
+ else
+ {
+ LogHelper.LogError("缺少 " + methodFunc);
+ }
+ m_State = nextState;
StartCoroutine(m_State.ToString(), param);
}
@@ -113,7 +116,7 @@ public class UnitState : UnitComponent void OnIdleExit(EUnitState nextState)
{
-
+ LogHelper.Log(nextState.ToString());
}
#endregion
diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index c39e82f4..8cea1331 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -18,7 +18,7 @@ public class UnitController : MonoBehaviour public GameObject unitObj; // 角色模型
- public bool isTowardRight
+ public bool isTowardRight
{
get
{
diff --git a/Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs b/Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs index f2a31bba..9bcb8b84 100644 --- a/Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs +++ b/Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs @@ -249,9 +249,6 @@ public class RootMotionEditor : EditorWindow m_Animator.Update(kDeltaTime);
m_Animator.speed = 0;
- //m_Transform.rotation *= m_Animator.deltaRotation;
- //m_Transform.position += m_Animator.deltaPosition;
-
sampleTime += kDeltaTime;
if(sampleTime >= sampleDuration)
{
diff --git a/Assets/Scripts/Unit/UnitRootMotion.cs b/Assets/Scripts/Unit/UnitRootMotion.cs index 18e0093f..542b08fd 100644 --- a/Assets/Scripts/Unit/UnitRootMotion.cs +++ b/Assets/Scripts/Unit/UnitRootMotion.cs @@ -70,7 +70,7 @@ public class UnitRootMotion : UnitComponent public void UpdateRootMotion()
{
Vector3 dest = m_Owner.unitAnimation.animator.deltaPosition;
- dest.x = 0;
+ dest.x = 0; //限制x轴始终在x=0
m_Owner.transform.position += dest;
}
|