summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity13
-rw-r--r--Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller2
-rw-r--r--Erika/Assets/Scripts/Input/InputKeyboardMouse.cs19
-rw-r--r--Erika/Assets/Scripts/Input/InputKeyboardMouse.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Input/InputManager.cs86
-rw-r--r--Erika/Assets/Scripts/Managers/UnitManager.cs3
-rw-r--r--Erika/Assets/Scripts/Test2/TestInput.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitAnimation/UnitMotion.cs37
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState.cs20
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitState/Erika/PCState_States.cs54
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/IdleState.cs2
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs36
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitStatemachine/Common/MoveState.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController.cs9
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/PCController_Commands.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/UnitRootMotion.cs10
16 files changed, 180 insertions, 141 deletions
diff --git a/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity b/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
index 42c3083a..aa010edf 100644
--- a/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
+++ b/Erika/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
@@ -123,6 +123,7 @@ GameObject:
- component: {fileID: 152403862}
- component: {fileID: 152403861}
- component: {fileID: 152403863}
+ - component: {fileID: 152403864}
m_Layer: 0
m_Name: InputManager
m_TagString: Untagged
@@ -168,6 +169,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 78d3bc54e34721e468d0541fb5c0c839, type: 3}
m_Name:
m_EditorClassIdentifier:
+--- !u!114 &152403864
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 152403860}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0524ad309fb60ba4cae5f63a6f5c1bb3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
--- !u!1 &203878585
GameObject:
m_ObjectHideFlags: 0
diff --git a/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller b/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
index e25ffbd8..4b8fcdfb 100644
--- a/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
+++ b/Erika/Assets/Bundle/Unit/PC/Erika/AnimatorController/Erika_AnimatorController.controller
@@ -856,7 +856,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: 7400000, guid: 599f2b26128dfd742b4aefbc285c4d3e, type: 2}
+ m_Motion: {fileID: 0}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
diff --git a/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs
new file mode 100644
index 00000000..ebcb457e
--- /dev/null
+++ b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class InputKeyboardMouse : MonoBehaviour
+{
+ void Update()
+ {
+ if (Input.GetButtonDown("Fire1"))
+ {
+ PCController.instance.CommandMove();
+ }
+ if (Input.GetButtonDown("Fire2"))
+ {
+ PCController.instance.CommandIdle();
+ }
+
+ }
+}
diff --git a/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs.meta b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs.meta
new file mode 100644
index 00000000..3ccc10f4
--- /dev/null
+++ b/Erika/Assets/Scripts/Input/InputKeyboardMouse.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0524ad309fb60ba4cae5f63a6f5c1bb3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Erika/Assets/Scripts/Input/InputManager.cs b/Erika/Assets/Scripts/Input/InputManager.cs
index 57bc3399..5403d779 100644
--- a/Erika/Assets/Scripts/Input/InputManager.cs
+++ b/Erika/Assets/Scripts/Input/InputManager.cs
@@ -2,93 +2,23 @@
using System.Collections.Generic;
using UnityEngine;
-public struct InputCommand
-{
- public KeyCode key;
- public float time;
-}
-
-// 处理输入逻辑,不涉及读取输入,只处理逻辑
+/// <summary>
+/// 只处理逻辑,不涉及输入。逻辑和输入分离
+/// </summary>
public class InputManager : SingletonMB<InputManager>
{
- PCController _pc;
-
- List<InputCommand> m_CommandQueue = new List<InputCommand>();
-
- const float threshold = 3;
-
- PCController pc
- {
- get
- {
- if (_pc == null)
- _pc = PCController.instance;
- return _pc;
- }
- }
-
- public void OnUpdate()
- {
- foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
- {
- if (Input.GetKeyDown(vKey))
- {
- InputCommand cmd = new InputCommand();
- cmd.key = vKey;
- cmd.time = Time.time;
- m_CommandQueue.Add(cmd);
- }
- }
- float curTime = Time.time;
- int removeCount = 0;
- for(int i = 0; i < m_CommandQueue.Count; ++i)
- {
- if(curTime - m_CommandQueue[i].time > threshold)
- {
- removeCount++;
- }
- }
- m_CommandQueue.RemoveRange(0, removeCount);
- }
-
- public bool TryCommand(float interval = 0.5f, params KeyCode[] keys)
- {
- return TryCommand(interval, true, keys);
-
+ public void InputMove()
+ {
}
- public bool TryCommand(float interval = 0.5f, bool checkInput = false, params KeyCode[] keys)
+ public void InputSkill()
{
- if (keys.Length > m_CommandQueue.Count)
- return false;
- if (checkInput && !Input.GetKey(keys[keys.Length - 1]))
- return false;
- int count = m_CommandQueue.Count;
- float preTime = m_CommandQueue[count - keys.Length].time;
- for (int i = 0; i < keys.Length; ++i)
- {
- if (keys[i] == m_CommandQueue[i + count - keys.Length].key)
- {
- if (m_CommandQueue[i + count - keys.Length].time - preTime > interval)
- {
- return false;
- }
- preTime = m_CommandQueue[i + count - keys.Length].time;
- }
- else
- {
- return false;
- }
- }
- //m_CommandQueue.RemoveRange(count - keys.Length, keys.Length);
- m_CommandQueue.Clear(); // 清理
- return true;
+
}
- public void ClearCommand()
+ public void InputDodge()
{
- m_CommandQueue.Clear();
}
}
diff --git a/Erika/Assets/Scripts/Managers/UnitManager.cs b/Erika/Assets/Scripts/Managers/UnitManager.cs
index 043e377a..53d25762 100644
--- a/Erika/Assets/Scripts/Managers/UnitManager.cs
+++ b/Erika/Assets/Scripts/Managers/UnitManager.cs
@@ -73,7 +73,8 @@ public class UnitManager : Singleton<UnitManager>
// 模型unit model
GameObject unitModel = GameObject.Instantiate(profile.unitPrefab);
unitModel.transform.SetParent(unitCtrl.transform);
- unitModel.transform.ResetTransformation();
+ //unitModel.transform.ResetTransformation();
+ unitModel.transform.localPosition = Vector3.zero;
unitModel.transform.localRotation = Quaternion.Euler(0, 90, 0);
// 装配初始化
diff --git a/Erika/Assets/Scripts/Test2/TestInput.cs b/Erika/Assets/Scripts/Test2/TestInput.cs
index 1a43f108..5c46886b 100644
--- a/Erika/Assets/Scripts/Test2/TestInput.cs
+++ b/Erika/Assets/Scripts/Test2/TestInput.cs
@@ -7,7 +7,7 @@ public class TestInput : MonoBehaviour
private void Update()
{
- InputManager.Instance.OnUpdate();
+ //InputManager.Instance.OnUpdate();
}
}
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;
}