diff options
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
6 files changed, 109 insertions, 51 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: |