summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2022-11-15 20:26:14 +0800
committerchai <215380520@qq.com>2022-11-15 20:26:14 +0800
commite24e8b29b8f77a5a5507a429e5aad76aaa834be9 (patch)
treedd659be7207230e73ce30f6fff3d424865da3a73 /Erika/Assets/Scripts/Unit
parenteeb5a85cda3078a4c80f4bde4cb9b0f22cd1ea58 (diff)
* animation
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs37
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs20
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs54
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs36
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController.cs9
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/UnitRootMotion.cs10
9 files changed, 125 insertions, 60 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
index d94a3f44..5836abac 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs
@@ -43,7 +43,9 @@ public class UnitMotion : UnitComponent
set
{
m_currentMotionIDID = value;
- m_Dirty = true;
+
+ m_AnimationClip = null;
+ m_Dirty = true;
}
}
@@ -73,16 +75,21 @@ public class UnitMotion : UnitComponent
}
// 当前动作的动画片段
- public AnimationClip animationClip
+ private AnimationClip m_AnimationClip;
+ public AnimationClip animationClip
{
get
{
- if(animationData != null)
- {
- AnimationClip clip = ResourceManager.Instance.LoadAsset<AnimationClip>(animationData.animationPath);
- return clip;
- }
- return null;
+ if(m_AnimationClip == null)
+ {
+ if (animationData != null)
+ {
+ AnimationClip clip = ResourceManager.Instance.LoadAsset<AnimationClip>(animationData.animationPath);
+ m_AnimationClip = clip;
+ return clip;
+ }
+ }
+ return m_AnimationClip;
}
}
@@ -91,9 +98,10 @@ public class UnitMotion : UnitComponent
get
{
AnimatorStateInfo state = stateInfo;
- if (!state.loop && state.normalizedTime > 1)
- return 1;
- return state.normalizedTime % 1f;
+ //if (!state.loop && state.normalizedTime > 1) // 不知道为啥state.loop不对,始终是false,改用animationClip.isLooping
+ if(!animationClip.isLooping && state.normalizedTime > 1)
+ return 1;
+ return state.normalizedTime % 1f;
}
}
@@ -339,8 +347,11 @@ public class UnitMotion : UnitComponent
{
if(m_Animator != null)
{
- m_OverrideController[target] = clip != null ? clip : null;
- return true;
+ if(m_OverrideController[target] != clip)
+ {
+ m_OverrideController[target] = clip != null ? clip : null;
+ }
+ return true;
}
return false;
}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
index 4a7d489c..e44c7f85 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs
@@ -110,16 +110,16 @@ public partial class PCState : UnitState
void TryDash()
{
- if (InputManager.Instance.TryCommand(0.5f, KeyCode.A, KeyCode.A))
- {
- TurnLeft();
- ChangeState(EUnitState.AirDash, new AirDashParam(), true);
- }
- if (InputManager.Instance.TryCommand(0.5f, KeyCode.D, KeyCode.D))
- {
- TurnRight();
- ChangeState(EUnitState.AirDash, new AirDashParam(), true);
- }
+ //if (InputManager.Instance.TryCommand(0.5f, KeyCode.A, KeyCode.A))
+ //{
+ // TurnLeft();
+ // ChangeState(EUnitState.AirDash, new AirDashParam(), true);
+ //}
+ //if (InputManager.Instance.TryCommand(0.5f, KeyCode.D, KeyCode.D))
+ //{
+ // TurnRight();
+ // ChangeState(EUnitState.AirDash, new AirDashParam(), true);
+ //}
}
void TryTurnAround()
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs
index 16a099d7..951945e3 100644
--- a/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs
+++ b/Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs
@@ -176,7 +176,7 @@ public partial class PCState : UnitState
{
//m_Owner.pcAnimation.AnimAttackToAir(param.offset);
yield return null;
- InputManager.Instance.ClearCommand();
+ //InputManager.Instance.ClearCommand();
while (true)
{
TryTianyin();
@@ -185,11 +185,11 @@ public partial class PCState : UnitState
{
TryDash();
- if (InputManager.Instance.TryCommand(0.5f, false, KeyCode.J))
- {
- ChangeState(EUnitState.AirAttack, new SkillParam());
- yield break;
- }
+ //if (InputManager.Instance.TryCommand(0.5f, false, KeyCode.J))
+ //{
+ // ChangeState(EUnitState.AirAttack, new SkillParam());
+ // yield break;
+ //}
}
if (isAnimationReachEnd || isAnimationReachEndPoint)
@@ -215,7 +215,7 @@ public partial class PCState : UnitState
int id = 0;
//m_Owner.pcAnimation.AnimAirAttack(id++);
yield return null;
- InputManager.Instance.ClearCommand();
+ //InputManager.Instance.ClearCommand();
while (true)
{
if (TryTeleport())
@@ -228,15 +228,15 @@ public partial class PCState : UnitState
{
TryDash();
- if (InputManager.Instance.TryCommand(0.3f, false, KeyCode.J))
- {
- TryTurnAround();
+ //if (InputManager.Instance.TryCommand(0.3f, false, KeyCode.J))
+ //{
+ // TryTurnAround();
- //m_Owner.pcAnimation.AnimAirAttack(id++);
- //id %= total;
- ////yield return null; // 等待animator更新
- //yield return new WaitForTransitionDone(m_Owner.pcAnimation);
- }
+ // //m_Owner.pcAnimation.AnimAirAttack(id++);
+ // //id %= total;
+ // ////yield return null; // 等待animator更新
+ // //yield return new WaitForTransitionDone(m_Owner.pcAnimation);
+ //}
}
if (isAnimationReachEnd)
@@ -303,18 +303,18 @@ public partial class PCState : UnitState
//yield return new WaitForTransitionDone(pcAnimation);
while (true)
{
- if (InputManager.Instance.TryCommand(0.5f, KeyCode.A, KeyCode.A))
- {
- TurnLeft();
- ChangeState(EUnitState.AirDash, new AirDashParam());
- yield break;
- }
- if (InputManager.Instance.TryCommand(0.5f, KeyCode.D, KeyCode.D))
- {
- TurnRight();
- ChangeState(EUnitState.AirDash, new AirDashParam());
- yield break;
- }
+ //if (InputManager.Instance.TryCommand(0.5f, KeyCode.A, KeyCode.A))
+ //{
+ // TurnLeft();
+ // ChangeState(EUnitState.AirDash, new AirDashParam());
+ // yield break;
+ //}
+ //if (InputManager.Instance.TryCommand(0.5f, KeyCode.D, KeyCode.D))
+ //{
+ // TurnRight();
+ // ChangeState(EUnitState.AirDash, new AirDashParam());
+ // yield break;
+ //}
if (isAnimationReachEnd)
{
ChangeState(EUnitState.Landing, new LandingParam());
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs
index e477d671..0aab3c51 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, 0);
+ m_Motion.CrossFade(EAnimationType.Idle, 1f);
}
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
new file mode 100644
index 00000000..6354af59
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs
@@ -0,0 +1,36 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+namespace UnitStates.Common
+{
+
+ public class MoveState : UnitStateBase
+ {
+ public struct IdleParam : IStateParam
+ {
+ }
+
+ public override void ModifyNextState(EUnitState state, UnitStateBase nextState)
+ {
+ }
+
+ public override void OnEnter(IStateParam param)
+ {
+ m_Motion.CrossFade(EAnimationType.Move, 1f);
+ }
+
+ public override void OnExit()
+ {
+ }
+
+ public override void OnFixedUpdate()
+ {
+ }
+
+ public override void OnUpdate()
+ {
+ }
+ }
+}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs.meta
new file mode 100644
index 00000000..104d446c
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 18b4515f03d0b0d40ba3851fce451a64
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController.cs b/Erika/Assets/Scripts/Unit/Controller/PCController.cs
index e7c20766..95320912 100644
--- a/Erika/Assets/Scripts/Unit/Controller/PCController.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController.cs
@@ -38,18 +38,11 @@ public sealed partial class PCController : UnitController
void InitStatemachine()
{
fsm.AddState(EUnitState.Idle, new UnitStates.Common.IdleState());
- fsm.AddState(EUnitState.Move, new UnitStates.Common.IdleState());
+ fsm.AddState(EUnitState.Move, new UnitStates.Common.MoveState());
fsm.ChangeState(EUnitState.Idle, null);
}
- public override void Update()
- {
- base.Update();
- unitAfterImage.OnUpdate();
- unitImageEffect.OnUpdate();
- }
-
public override void OnGrab()
{
}
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
index cf6d31f7..7ec5d30d 100644
--- a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs
@@ -7,6 +7,12 @@ public sealed partial class PCController : UnitController
public void CommandMove()
{
+ unitStatemachine.ChangeState(EUnitState.Move, null);
+ }
+
+ public void CommandIdle()
+ {
+ unitStatemachine.ChangeState(EUnitState.Idle, null);
}
public void CommandDodge()
diff --git a/Erika/Assets/Scripts/Unit/UnitRootMotion.cs b/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
index c8df0729..661ecc5e 100644
--- a/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
+++ b/Erika/Assets/Scripts/Unit/UnitRootMotion.cs
@@ -74,9 +74,17 @@ public class UnitRootMotion : UnitComponent
public override void OnUpdate()
{
base.OnUpdate();
+
}
- public void OnAnimationChange()
+ public void LateUpdate()
+ {
+ m_Owner.unitMotion.animator.transform.localPosition = Vector3.zero;
+
+ //UpdateRootMotion();
+ }
+
+ public void OnAnimationChange()
{
m_PrevAnimationData = null;
}