diff options
author | chai <215380520@qq.com> | 2022-11-18 14:24:37 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2022-11-18 14:24:37 +0800 |
commit | 1393efb0c1d8189f538ddc9e2af317c982002ac2 (patch) | |
tree | 751919efdbc0cbbd4d67f802412cffdc8b09d53a /Erika/Assets/Scripts/Unit | |
parent | 95732f7fb714cf32eaf0dbed66e424a92759df17 (diff) |
* animator controller
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
10 files changed, 63 insertions, 57 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 } diff --git a/Erika/Assets/Scripts/Unit/Controller/MonsterController.cs b/Erika/Assets/Scripts/Unit/Controller/MonsterController.cs index cffc08f0..225f46d3 100644 --- a/Erika/Assets/Scripts/Unit/Controller/MonsterController.cs +++ b/Erika/Assets/Scripts/Unit/Controller/MonsterController.cs @@ -61,7 +61,7 @@ public class MonsterController : UnitController public virtual bool IsFacePC()
{
- PCController pc = PCController.instance;
+ PCController pc = UnitManager.Instance.pc;
float pcX = pc.transform.position.x;
float x = transform.position.x;
bool isface = pcX > x && isTowardRight || pcX <= x && !isTowardRight;
@@ -73,7 +73,7 @@ public class MonsterController : UnitController {
if (IsFacePC())
return;
- PCController pc = PCController.instance;
+ PCController pc = UnitManager.Instance.pc;
float pcX = pc.transform.position.x;
float x = transform.position.x;
if (pcX > x)
@@ -88,7 +88,7 @@ public class MonsterController : UnitController public virtual void FaceToFacePC()
{
- PCController pc = PCController.instance;
+ PCController pc = UnitManager.Instance.pc;
transform.rotation = Quaternion.Euler(0, 180, 0) * pc.transform.rotation;
}
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController.cs b/Erika/Assets/Scripts/Unit/Controller/PCController.cs index ddce9e02..cddf8540 100644 --- a/Erika/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Erika/Assets/Scripts/Unit/Controller/PCController.cs @@ -6,19 +6,12 @@ using UnityEngine; [DisallowMultipleComponent]
public sealed partial class PCController : UnitController
{
- public static PCController instance;
-
// Unit的三种效果
public UnitAfterImage unitAfterImage;
public UnitImageEffect unitImageEffect;
public override UnitType type { get { return UnitType.PC; } }
- private void Awake()
- {
- instance = this;
- }
-
protected override void Initialize(UnitProfile profile)
{
base.Initialize(profile);
diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs index 25f60a56..63550002 100644 --- a/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs +++ b/Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs @@ -21,10 +21,10 @@ public sealed partial class PCController : UnitController public void CommandMove(EUnitDirection dir) { - if (!IsMoveAble()) + if (!unitStatemachine.IsMoveAble()) return; - EnterMove(); + unitStatemachine.EnterMove(); } public void CommandIdle() diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs deleted file mode 100644 index f011e6db..00000000 --- a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -// 操作状态机 - -public sealed partial class PCController : UnitController -{ - - private bool IsMoveAble() - { - return true; - } - - #region 操作statemachine - - void EnterMove() - { - if (fsm.IsInState(EUnitState.Move)) - return; - - fsm.ChangeState(EUnitState.Move); - } - - #endregion - -} diff --git a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta b/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta deleted file mode 100644 index f1ccd46a..00000000 --- a/Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fafb158c8bb0c4340a63c4cb743706de -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs index 49d0aa79..3b2822a7 100644 --- a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs @@ -11,8 +11,9 @@ using UnityEngine; public enum EUnitDirection
{
- Right = 0, // 默认朝右
- Left = 1, // 左
+ None = 0,
+ Right = 1, // 默认朝右
+ Left = 2, // 左
}
/// <summary>
diff --git a/Erika/Assets/Scripts/Unit/UnitProfile.cs b/Erika/Assets/Scripts/Unit/UnitProfile.cs index 66e007ff..15efb71f 100644 --- a/Erika/Assets/Scripts/Unit/UnitProfile.cs +++ b/Erika/Assets/Scripts/Unit/UnitProfile.cs @@ -20,9 +20,6 @@ public class UnitProfile : ScriptableObject //public UnitActionData actionData; - [Tooltip("角色所有动作")] - public UnitMotionData motionData; - public string unitFolder; public GameObject unitControllerPrefab; @@ -31,8 +28,10 @@ public class UnitProfile : ScriptableObject public RuntimeAnimatorController animController; - [Header("技能相关")] - [Space(5)] + [Header("角色所有动作"), Space(5)] + public UnitMotionData motionData; + + [Header("角色所有技能"), Space(5)] [Tooltip("技能")] public List<SkillData> skills; |