diff options
author | chai <215380520@qq.com> | 2022-11-15 20:26:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2022-11-15 20:26:14 +0800 |
commit | e24e8b29b8f77a5a5507a429e5aad76aaa834be9 (patch) | |
tree | dd659be7207230e73ce30f6fff3d424865da3a73 /Erika/Assets/Scripts/Unit | |
parent | eeb5a85cda3078a4c80f4bde4cb9b0f22cd1ea58 (diff) |
* animation
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
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;
}
|