summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit/Components
diff options
context:
space:
mode:
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStateBase.cs5
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/UnitStatemachine.cs42
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
}