summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2022-11-18 14:24:37 +0800
committerchai <215380520@qq.com>2022-11-18 14:24:37 +0800
commit1393efb0c1d8189f538ddc9e2af317c982002ac2 (patch)
tree751919efdbc0cbbd4d67f802412cffdc8b09d53a /Erika/Assets/Scripts/Unit
parent95732f7fb714cf32eaf0dbed66e424a92759df17 (diff)
* animator controller
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
-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
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/MonsterController.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController.cs7
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs4
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_States.cs27
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_States.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/UnitController.cs5
-rw-r--r--Erika/Assets/Scripts/Unit/UnitProfile.cs9
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;