summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Props.meta8
-rw-r--r--Assets/Scripts/Scene.meta8
-rw-r--r--Assets/Scripts/Test 1/TestErika.cs8
-rw-r--r--Assets/Scripts/Unit/Action/WaitForActionReachEnd.cs4
-rw-r--r--Assets/Scripts/Unit/Component/UnitAnimation.cs54
-rw-r--r--Assets/Scripts/Unit/Component/UnitState.cs27
-rw-r--r--Assets/Scripts/Unit/Controller/UnitController.cs2
-rw-r--r--Assets/Scripts/Unit/RootMotion/Editor/RootMotionEditor.cs3
-rw-r--r--Assets/Scripts/Unit/UnitRootMotion.cs2
9 files changed, 53 insertions, 63 deletions
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta
new file mode 100644
index 00000000..bb96602e
--- /dev/null
+++ b/Assets/Scripts/Props.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f299520ed9fcf4a45858ad4ef5a8d5d1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Scene.meta b/Assets/Scripts/Scene.meta
new file mode 100644
index 00000000..eb7a8716
--- /dev/null
+++ b/Assets/Scripts/Scene.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eaee2d0f48cff9b40baf0686a8105600
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Test 1/TestErika.cs b/Assets/Scripts/Test 1/TestErika.cs
index c76f09e0..96fcec25 100644
--- a/Assets/Scripts/Test 1/TestErika.cs
+++ b/Assets/Scripts/Test 1/TestErika.cs
@@ -46,10 +46,10 @@ public class TestErika : MonoBehaviour
animCtr.name = unitPrefab.name + " Override Controller";
animator.runtimeAnimatorController = animCtr;
- foreach(var action in actionData.actions)
- {
- animCtr[action.Key.ToString()] = action.Value;
- }
+ //foreach(var action in actionData.actions)
+ //{
+ // animCtr[action.Key.ToString()] = action.Value;
+ //}
unitCtr.unitState.ChangeState(UnitState.EUnitState.Idle, new UnitState.IdleParam());
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;
}