diff options
author | chai <chaifix@163.com> | 2020-10-18 00:48:13 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-10-18 00:48:13 +0800 |
commit | c83b9abffe8988f9322a027b7fefd68e7f3fa6ba (patch) | |
tree | d29bd71fd485e9e4d5aa1ae68a7af2501b641b9d /Assets/Scripts/AbilitySystem | |
parent | fd4f77ee3621bef2ce91ee6584ca9a2dc5064f96 (diff) |
+dash 动作
Diffstat (limited to 'Assets/Scripts/AbilitySystem')
7 files changed, 79 insertions, 7 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs index a3cda9c9..85a5a0a6 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs @@ -2,6 +2,7 @@ using System.Collections.Generic;
using UnityEngine;
+// 单独的一个招式
public class AttackAbility : AbilityBase
{
Animator m_Animator;
@@ -43,7 +44,7 @@ public class AttackAbility : AbilityBase public override void OnEnter()
{
m_TimeCount = 0;
- m_Animator.CrossFade(m_AnimHash, 0f);
+ m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.25f);
}
public override void OnExit()
diff --git a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs index dfd9478d..0a59419f 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs @@ -23,7 +23,7 @@ public class IdleAbility : AbilityBase public override void OnEnter()
{
- m_Animator.CrossFade(m_AnimHash, 0.3f);
+ m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.25f);
}
public override void OnInit()
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs index eadee433..139325b6 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs @@ -30,7 +30,7 @@ public class MoveAbility : AbilityBase public override void OnEnter()
{
- m_Animator.CrossFade(m_AnimHash, 0);
+ m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.1f);
}
public override void OnExit()
diff --git a/Assets/Scripts/AbilitySystem/AbilitySystem.cs b/Assets/Scripts/AbilitySystem/AbilitySystem.cs index b9b2b9ee..0441e813 100644 --- a/Assets/Scripts/AbilitySystem/AbilitySystem.cs +++ b/Assets/Scripts/AbilitySystem/AbilitySystem.cs @@ -7,10 +7,12 @@ using UnityEngine; /// </summary> public class AbilitySystem { + private static List<AbilitySystem> AbilitySystems = new List<AbilitySystem>(); + /// <summary> /// 当前执行的ability /// </summary> - private AbilityBase m_Currrent; + private AbilityBase m_Currrent; public AbilityBase Current { @@ -22,6 +24,19 @@ public class AbilitySystem private List<AbilityBase> m_Abilities = new List<AbilityBase>(); + public AbilitySystem() + { + AbilitySystems.Add(this); + } + + public static void Update() + { + foreach(var systems in AbilitySystems) + { + systems.OnUpdate(); + } + } + public void ForceStart(AbilityBase ability) { if (ability == null) diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs b/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs new file mode 100644 index 00000000..b3bdd3fa --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActionWipeCmdRecord : ActionBase +{ + public override void Execute() + { + InputManager.Instance.CommandRecord.Clear(); + } +}
\ No newline at end of file diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs.meta new file mode 100644 index 00000000..86c5ec59 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionWipeCmdRecord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6124291d136fa604bafde35cb10af76b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs index 8c955400..71a7dbf3 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs @@ -7,14 +7,48 @@ using UnityEngine; /// </summary>
public class ConditionCommandSeq : ConditionBase
{
+ List<GamepadButton> m_CommandSeq = new List<GamepadButton>();
+ float m_DeltaTime = 0;
+ List<int> m_LastCmdID = new List<int>();
- public ConditionCommandSeq(List<GamepadButton> commandSeq, float maxDeltaTime)
- {
+ List<int> id = new List<int>();
+ public ConditionCommandSeq(List<GamepadButton> commandSeq, float maxDeltaTime)
+ {
+ m_CommandSeq.AddRange(commandSeq);
+ m_DeltaTime = maxDeltaTime;
}
public override bool Evaluate()
{
- throw new System.NotImplementedException();
+ List<Command> commandRecord = InputManager.Instance.CommandRecord;
+ if (commandRecord == null || commandRecord.Count < m_CommandSeq.Count)
+ return false;
+ id.Clear();
+ for (int i = 1; i < m_CommandSeq.Count; ++i)
+ {
+ GamepadButton button = m_CommandSeq[i];
+ GamepadButton preButton = m_CommandSeq[i-1];
+ int j = commandRecord.Count - m_CommandSeq.Count + i;
+ Command cmd = commandRecord[j];
+ Command preCmd = commandRecord[j-1];
+ if (preCmd.code != preButton || cmd.code != button)
+ return false;
+ if (cmd.time - preCmd.time > m_DeltaTime)
+ return false;
+ id.Add(preCmd.id);
+ if (j == commandRecord.Count - 1)
+ id.Add(cmd.id);
+ }
+
+ //for (int i = 0; i < id.Count; ++i)
+ //{
+ // if (m_LastCmdID.Contains(id[i]))
+ // return false;
+ //}
+ //m_LastCmdID.Clear();
+ //m_LastCmdID.AddRange(id);
+
+ return true;
}
}
|