diff options
author | chai <chaifix@163.com> | 2020-10-17 15:39:34 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-10-17 15:39:34 +0800 |
commit | fee35151213939d61d2dbd9d6a0ba71ac93b91cf (patch) | |
tree | 3aa986e27f36e47242b9a12b7e7b6a8d5d8c0fc8 /Assets/Scripts | |
parent | f99c4d56cf95c563e95d3965ffd6d8ba33b660ee (diff) |
+ 连击测试
Diffstat (limited to 'Assets/Scripts')
21 files changed, 355 insertions, 67 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs index 6732cf57..067d49a8 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs @@ -2,12 +2,67 @@ using System.Collections.Generic;
using UnityEngine;
-/// <summary>
-/// 单个招式ability
-/// </summary>
-public class AttackAbilityBase : AbilityBase
+public class AttackAbility : AbilityBase
{
- // 攻击ability默认都会回到idle
+ Animator m_Animator;
+ int m_AnimHash;
+ /// <summary>
+ /// 在跑动状态时可以切换的ability
+ /// </summary>
+ private List<Trigger> m_Triggers = new List<Trigger>();
+
+ public AttackAbility(Animator animator, int animation)
+ {
+ m_Animator = animator;
+ m_AnimHash = animation;
+ }
+
+ public override void OnInit()
+ {
+
+ }
+
+ public override void OnDefend()
+ {
+ throw new System.NotImplementedException();
+ }
+
+ public override void OnEnter()
+ {
+ m_Animator.CrossFade(m_AnimHash, 0);
+ }
+
+ public override void OnExit()
+ {
+ }
+
+ public override void OnHit()
+ {
+ }
+
+ public override void OnHurt()
+ {
+ }
+
+ public override void OnTranslate(AbilityBase to)
+ {
+ }
+
+ public override void OnUpdate()
+ {
+ foreach (var abilityTrigger in m_Triggers)
+ {
+ if (abilityTrigger.Update())
+ break;
+ }
+ }
+
+ public void AddTrigger(Trigger trigger)
+ {
+ if (trigger == null || m_Triggers.Contains(trigger))
+ return;
+ m_Triggers.Add(trigger);
+ }
}
diff --git a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs index 4b9cd21e..8be58188 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs @@ -5,25 +5,27 @@ using UnityEngine; public class IdleAbility : AbilityBase
{
- /// <summary>
- /// idle的动画
- /// </summary>
+ Animator m_Animator;
+
int m_AnimHash;
/// <summary>
/// 在Idle状态时可以切换的ability
/// </summary>
- private List<Trigger> m_Triggers;
+ private List<Trigger> m_Triggers = new List<Trigger>();
- public IdleAbility(int animation)
+ public IdleAbility(Animator animator, int animation)
: base()
{
- m_AnimHash = animation;
+ m_Animator = animator;
+ m_AnimHash = animation;
}
public override void OnEnter()
{
-
+ m_Animator.speed = 1;
+ m_Animator.CrossFade(m_AnimHash, 0.3f);
+ m_Animator.speed = 0;
}
public override void OnInit()
@@ -42,9 +44,11 @@ public class IdleAbility : AbilityBase base.OnUpdate();
}
- public void AddTrigger()
+ public void AddTrigger(Trigger trigger)
{
-
+ if (trigger == null || m_Triggers.Contains(trigger))
+ return;
+ m_Triggers.Add(trigger);
}
}
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs index 2c39afd5..eadee433 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs @@ -4,11 +4,19 @@ using UnityEngine; public class MoveAbility : AbilityBase
{
+ Animator m_Animator;
+ int m_AnimHash;
/// <summary>
/// 在跑动状态时可以切换的ability
/// </summary>
- private List<Trigger> m_Triggers;
+ private List<Trigger> m_Triggers = new List<Trigger>();
+
+ public MoveAbility(Animator animator, int animation)
+ {
+ m_Animator = animator;
+ m_AnimHash = animation;
+ }
public override void OnInit()
{
@@ -22,7 +30,7 @@ public class MoveAbility : AbilityBase public override void OnEnter()
{
-
+ m_Animator.CrossFade(m_AnimHash, 0);
}
public override void OnExit()
@@ -31,7 +39,6 @@ public class MoveAbility : AbilityBase public override void OnHit()
{
- throw new System.NotImplementedException();
}
public override void OnHurt()
@@ -40,7 +47,6 @@ public class MoveAbility : AbilityBase public override void OnTranslate(AbilityBase to)
{
- throw new System.NotImplementedException();
}
public override void OnUpdate()
@@ -51,4 +57,12 @@ public class MoveAbility : AbilityBase break;
}
}
+
+ public void AddTrigger(Trigger trigger)
+ {
+ if (trigger == null || m_Triggers.Contains(trigger))
+ return;
+ m_Triggers.Add(trigger);
+ }
+
}
diff --git a/Assets/Scripts/AbilitySystem/AbilitySystem.cs b/Assets/Scripts/AbilitySystem/AbilitySystem.cs index 890c1b4b..b9b2b9ee 100644 --- a/Assets/Scripts/AbilitySystem/AbilitySystem.cs +++ b/Assets/Scripts/AbilitySystem/AbilitySystem.cs @@ -20,7 +20,7 @@ public class AbilitySystem } } - private List<AbilityBase> m_Abilities; + private List<AbilityBase> m_Abilities = new List<AbilityBase>(); public void ForceStart(AbilityBase ability) { @@ -30,8 +30,8 @@ public class AbilitySystem if (m_Currrent != null) m_Currrent.OnExit(); - ability.OnEnter(); m_Currrent = ability; + m_Currrent.OnEnter(); } public void AddAbility(AbilityBase ability) @@ -47,4 +47,12 @@ public class AbilitySystem } } + public void SwitchToAbility(AbilityBase targetAbility) + { + if (m_Currrent != null) + m_Currrent.OnExit(); + m_Currrent = targetAbility; + m_Currrent.OnEnter(); + } + }
\ No newline at end of file diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs b/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs new file mode 100644 index 00000000..69c7f179 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActionSwitchAbility : ActionBase +{ + AbilitySystem m_AbilitySystem; + AbilityBase m_TargetAbility; + + public ActionSwitchAbility(AbilitySystem abilitySystem, AbilityBase targetAbility) + { + m_AbilitySystem = abilitySystem; + m_TargetAbility = targetAbility; + } + + public override void Execute() + { + m_AbilitySystem.SwitchToAbility(m_TargetAbility); + } +} diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs.meta new file mode 100644 index 00000000..3059d95d --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionSwitchAbility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce17bc5eca89ffc468e536284af75c4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs index 019c16a9..cfdcfab5 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs @@ -20,7 +20,7 @@ public class ConditionAnimAtEnd : ConditionBase public override bool Evaluate()
{
AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
- if(info.fullPathHash == m_AnimationHash)
+ if(info.shortNameHash == m_AnimationHash)
{
float t = info.normalizedTime;
if (t >= 0.99f)
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs index 82db03e0..b8f98065 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs @@ -12,14 +12,17 @@ public sealed class ConditionAnimRange : ConditionBase public ConditionAnimRange(Animator animator, float start, float end)
{
- m_TimeRange.Set(start, end);
+ m_Animator = animator;
+
+ m_TimeRange.Set(start, end);
}
public override bool Evaluate()
{
AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
float time = info.normalizedTime;
- return time >= m_TimeRange.x && time <= m_TimeRange.y;
- }
+ bool result = time >= m_TimeRange.x && time <= m_TimeRange.y;
+ return result;
+ }
}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs new file mode 100644 index 00000000..52abad03 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionButtonHold : ConditionBase +{ + GamepadButton m_Button; + + public ConditionButtonHold(GamepadButton button) + { + m_Button = button; + } + + public override bool Evaluate() + { + return InputManager.Instance.IsButtonHold(m_Button); + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs.meta new file mode 100644 index 00000000..82d350e2 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionButtonHold.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b0cd6f63cbe32649a15ab38d5bb6ee3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommand.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommand.cs index a7487d33..d735ef5b 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommand.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommand.cs @@ -7,9 +7,9 @@ using UnityEngine; /// </summary>
public class ConditionCommand : ConditionBase
{
- CommandCode m_TargetCommand;
+ GamepadButton m_TargetCommand;
- public ConditionCommand(CommandCode command)
+ public ConditionCommand(GamepadButton command)
{
m_TargetCommand = command;
}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs index 745d2aa8..8c955400 100644 --- a/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCommandSeq.cs @@ -8,7 +8,7 @@ using UnityEngine; public class ConditionCommandSeq : ConditionBase
{
- public ConditionCommandSeq(List<CommandCode> commandSeq, float maxDeltaTime)
+ public ConditionCommandSeq(List<GamepadButton> commandSeq, float maxDeltaTime)
{
}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs new file mode 100644 index 00000000..1084f191 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionMoveButtonHold : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs.meta new file mode 100644 index 00000000..45cf47bb --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMoveButtonHold.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77299e998cbe9d1429c2d0b731bff6e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs new file mode 100644 index 00000000..06a76784 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionNoMoveButtonHold : ConditionBase +{ + public ConditionNoMoveButtonHold() + { + } + + public override bool Evaluate() + { + bool isMoveButtonDown = InputManager.Instance.IsButtonHold(GamepadButton.Left) || InputManager.Instance.IsButtonHold(GamepadButton.Right); + return !isMoveButtonDown; + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs.meta new file mode 100644 index 00000000..db883c19 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNoMoveButtonHold.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce1302d58bf3a7043b6e2e25d13525d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Trigger.cs b/Assets/Scripts/AbilitySystem/Trigger.cs index b7b4751c..416655ee 100644 --- a/Assets/Scripts/AbilitySystem/Trigger.cs +++ b/Assets/Scripts/AbilitySystem/Trigger.cs @@ -9,19 +9,24 @@ using UnityEngine; public sealed class Trigger { private ConditionBase m_Condition; - private List<ActionBase> m_ActionChain; + private List<ActionBase> m_ActionChain = new List<ActionBase>(); - public Trigger(ConditionBase condition, List<ActionBase> actions) - { - m_Condition = condition; + public Trigger(ConditionBase condition, List<ActionBase> actions) + { + m_Condition = condition; m_ActionChain.AddRange(actions); - } - - /// <summary> - /// 如果触发执行了,返回true,否则返回false - /// </summary> - /// <returns></returns> - public bool Update() + } + public Trigger(ConditionBase condition, ActionBase action) + { + m_Condition = condition; + m_ActionChain.Add(action); + } + + /// <summary> + /// 如果触发执行了,返回true,否则返回false + /// </summary> + /// <returns></returns> + public bool Update() { if (m_Condition.Evaluate()) { diff --git a/Assets/Scripts/Input/Command.cs b/Assets/Scripts/Input/Command.cs index fae88684..7ef6c9eb 100644 --- a/Assets/Scripts/Input/Command.cs +++ b/Assets/Scripts/Input/Command.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using UnityEngine; -public enum CommandCode +public enum GamepadButton { Blank, @@ -22,13 +22,13 @@ public enum CommandCode public struct Command { - public CommandCode code; // 指令码 + public GamepadButton code; // 指令码 public float time; // 触发时间 public int id; - public static Command Blank = new Command(CommandCode.Blank, 0); + public static Command Blank = new Command(GamepadButton.Blank, 0); - public Command(CommandCode code, float time) + public Command(GamepadButton code, float time) { this.code = code; this.time = time; diff --git a/Assets/Scripts/Input/InputManager.cs b/Assets/Scripts/Input/InputManager.cs index 25daf848..771032a8 100644 --- a/Assets/Scripts/Input/InputManager.cs +++ b/Assets/Scripts/Input/InputManager.cs @@ -20,36 +20,36 @@ public class InputManager : Singleton<InputManager> public void Init()
{
m_CommandRecord = new List<Command>();
- m_CurrentCommand = new Command(CommandCode.Blank, 0);
+ m_CurrentCommand = new Command(GamepadButton.Blank, 0);
}
public void Update()
{
- CommandCode cmd = CommandCode.Blank;
+ GamepadButton cmd = GamepadButton.Blank;
// 移动
if (Input.GetKeyDown("w"))
- cmd = CommandCode.Up;
+ cmd = GamepadButton.Up;
if (Input.GetKeyDown("s"))
- cmd = CommandCode.Down;
+ cmd = GamepadButton.Down;
if (Input.GetKeyDown("a"))
- cmd = CommandCode.Left;
+ cmd = GamepadButton.Left;
if (Input.GetKeyDown("d"))
- cmd = CommandCode.Right;
+ cmd = GamepadButton.Right;
// 动作
if (Input.GetKeyDown("j"))
- cmd = CommandCode.Circle;
+ cmd = GamepadButton.Circle;
if (Input.GetKeyDown("k"))
- cmd = CommandCode.Triangle;
+ cmd = GamepadButton.Triangle;
if (Input.GetKeyDown("l"))
- cmd = CommandCode.Square;
+ cmd = GamepadButton.Square;
if(Input.GetKeyDown("u"))
- cmd = CommandCode.Cross;
+ cmd = GamepadButton.Cross;
- if(cmd != CommandCode.Blank)
+ if(cmd != GamepadButton.Blank)
{
float time = Time.time;
Command command = new Command(cmd, time);
- Debug.Log(CommandToString(command));
+ //Debug.Log(CommandToString(command));
m_CurrentCommand = command;
m_CommandRecord.Add(command);
@@ -57,24 +57,24 @@ public class InputManager : Singleton<InputManager> if(m_CommandRecord.Count > 10)
m_CommandRecord.RemoveRange(0, m_CommandRecord.Count - 10);
}
- else if(m_CurrentCommand.code != CommandCode.Blank)
+ else if(m_CurrentCommand.code != GamepadButton.Blank)
{
m_CurrentCommand = Command.Blank;
}
}
- string CommandCodeToString(CommandCode cmd)
+ string CommandCodeToString(GamepadButton cmd)
{
switch(cmd)
{
- case CommandCode.Left: return "←";
- case CommandCode.Right: return "→";
- case CommandCode.Up: return "↑";
- case CommandCode.Down: return "↓";
- case CommandCode.Circle: return "○";
- case CommandCode.Triangle: return "△";
- case CommandCode.Square: return "□";
- case CommandCode.Cross: return "×";
+ case GamepadButton.Left: return "←";
+ case GamepadButton.Right: return "→";
+ case GamepadButton.Up: return "↑";
+ case GamepadButton.Down: return "↓";
+ case GamepadButton.Circle: return "○";
+ case GamepadButton.Triangle: return "△";
+ case GamepadButton.Square: return "□";
+ case GamepadButton.Cross: return "×";
default: return "Unknown";
}
}
@@ -85,4 +85,26 @@ public class InputManager : Singleton<InputManager> return sign + " " + cmd.time + "s" + " " + cmd.id;
}
+ string GetGamepadButtonKey(GamepadButton button)
+ {
+ switch (button)
+ {
+ case GamepadButton.Blank: return "";
+ case GamepadButton.Up: return "w";
+ case GamepadButton.Down: return "s";
+ case GamepadButton.Left: return "a";
+ case GamepadButton.Right: return "d";
+ case GamepadButton.Circle: return "j";
+ case GamepadButton.Triangle: return "k";
+ case GamepadButton.Square: return "l";
+ case GamepadButton.Cross: return "u";
+ }
+ return "";
+ }
+
+ public bool IsButtonHold(GamepadButton button)
+ {
+ return Input.GetKey(GetGamepadButtonKey(button));
+ }
+
}
diff --git a/Assets/Scripts/Test/SaionjiScript.cs b/Assets/Scripts/Test/SaionjiScript.cs index a7ba6091..871f155f 100644 --- a/Assets/Scripts/Test/SaionjiScript.cs +++ b/Assets/Scripts/Test/SaionjiScript.cs @@ -14,6 +14,8 @@ public partial class SaionjiScript : MonoBehaviour public bool UsePistol;
public bool UseBlade;
+ public bool EnableAbilitySystem;
+
// Start is called before the first frame update
void Start()
{
@@ -25,6 +27,16 @@ public partial class SaionjiScript : MonoBehaviour Go_PistolR.SetActive(UsePistol);
Go_Blade.SetActive(UseBlade);
+ GetAnimHash();
+
+ if (EnableAbilitySystem)
+ SetupAbilities();
+ }
+
+ private void Update()
+ {
+ if (EnableAbilitySystem)
+ m_AbilitySystem.OnUpdate();
}
// 更新顺序:
diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs index 4b8f4693..1b248751 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs @@ -24,10 +24,59 @@ public partial class SaionjiScript : MonoBehaviour /// </summary>
void SetupAbilities()
{
- IdleAbility idleAbility = new IdleAbility(Anim_Idle);
+ IdleAbility idle = new IdleAbility(animator, Anim_Idle);
+ MoveAbility move = new MoveAbility(animator, Anim_Run);
+ AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1);
+ AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2);
+ AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3);
+ AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4);
+ AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5);
+ ActionSwitchAbility switchToMove = new ActionSwitchAbility(m_AbilitySystem, move);
+ ActionSwitchAbility switchToIdle = new ActionSwitchAbility(m_AbilitySystem, idle);
+ ActionSwitchAbility switchToAttk1 = new ActionSwitchAbility(m_AbilitySystem, attk1);
+ ActionSwitchAbility switchToAttk2 = new ActionSwitchAbility(m_AbilitySystem, attk2);
+ ActionSwitchAbility switchToAttk3 = new ActionSwitchAbility(m_AbilitySystem, attk3);
+ ActionSwitchAbility switchToAttk4 = new ActionSwitchAbility(m_AbilitySystem, attk4);
+ ActionSwitchAbility switchToAttk5 = new ActionSwitchAbility(m_AbilitySystem, attk5);
- m_AbilitySystem.AddAbility(idleAbility);
- }
+ ConditionCommand condRightCmd = new ConditionCommand(GamepadButton.Right);
+ ConditionNoMoveButtonHold condNoMoveButtonHold = new ConditionNoMoveButtonHold();
+ ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle);
+
+ Trigger trigger = null;
+
+ trigger = new Trigger(condRightCmd, switchToMove);
+ idle.AddTrigger(trigger);
+ trigger = new Trigger(condCircleCmd, switchToAttk1);
+ idle.AddTrigger(trigger);
+
+ trigger = new Trigger(condNoMoveButtonHold, switchToIdle);
+ move.AddTrigger(trigger);
+ trigger = new Trigger(condCircleCmd, switchToAttk1);
+ move.AddTrigger(trigger);
+
+ ConditionAnimAtEnd condAttk1AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack1);
+ trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2);
+ attk1.AddTrigger(trigger);
+
+ ConditionAnimAtEnd condAttk2AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack2);
+ trigger = new Trigger(And(condAttk2AtEnd, condCircleCmd), switchToAttk3);
+ attk2.AddTrigger(trigger);
+
+ ConditionAnimAtEnd condAttk3AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack3);
+ trigger = new Trigger(And(condAttk3AtEnd, condCircleCmd), switchToAttk4);
+ attk3.AddTrigger(trigger);
+
+ ConditionAnimAtEnd condAttk4AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack4);
+ trigger = new Trigger(And(condAttk4AtEnd, condCircleCmd), switchToAttk5);
+ attk4.AddTrigger(trigger);
+
+ ConditionAnimAtEnd condAttk5AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack5);
+ trigger = new Trigger(condAttk5AtEnd, switchToIdle);
+ attk5.AddTrigger(trigger);
+
+ m_AbilitySystem.ForceStart(idle);
+ }
}
\ No newline at end of file |