diff options
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
3 files changed, 51 insertions, 0 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs index c372c452..27a51f74 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs @@ -31,6 +31,10 @@ namespace UnitStates.Common public override void OnUpdate() { + if(!m_Owner.unitStatemachine.IsMoving()) + { + ChangeState(EUnitState.Idle); + } } } } diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStateBase.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStateBase.cs index 472a8850..da5a900f 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStateBase.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStateBase.cs @@ -30,6 +30,11 @@ public abstract class UnitStateBase m_Motion = owner.unitMotion; } + protected void ChangeState(EUnitState state) + { + fsm.ChangeState(state); + } + public abstract void OnEnter(IStateParam param); public abstract void OnExit(); public abstract void OnUpdate(); diff --git a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs index 8c3351a2..c97d0390 100644 --- a/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs +++ b/Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs @@ -195,6 +195,48 @@ public sealed class UnitStatemachine : UnitComponent return m_CurrentState == EUnitState.HitAir; } + public bool IsMove() + { + return m_CurrentState == EUnitState.Move; + } + + public bool IsMoveAble() + { + if (IsInState(EUnitState.Skill)) + return false; + + return true; + } + + // 是否正在移动中 + public bool IsMoving() + { + if (IsMove()) + { + if(owner.type == UnitController.UnitType.PC) + { + if(InputManager.Instance.CanInputMoveStop()) + return false; + + return true; + } + } + return false; + } + + #endregion + + #region 状态切换 + + + public void EnterMove() + { + if (IsInState(EUnitState.Move)) + return; + + ChangeState(EUnitState.Move); + } + #endregion } |