summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Test
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Test')
-rw-r--r--Assets/Scripts/Test/SaionjiScript.cs12
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Ability.cs55
2 files changed, 64 insertions, 3 deletions
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