From c83b9abffe8988f9322a027b7fefd68e7f3fa6ba Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 18 Oct 2020 00:48:13 +0800 Subject: =?UTF-8?q?+dash=20=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Test/SaionjiScript_Ability.cs | 52 ++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) (limited to 'Assets/Scripts/Test/SaionjiScript_Ability.cs') diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs index 375dc631..bd62c138 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs @@ -29,17 +29,22 @@ public partial class SaionjiScript : MonoBehaviour /// void SetupAbilities() { + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // abilities + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// IdleAbility idle = new IdleAbility(animator, Anim_Idle); MoveAbility move = new MoveAbility(animator, Anim_Run); - MoveAbility dash = new MoveAbility(animator, Anim_Run); + MoveAbility dash = new MoveAbility(animator, Anim_DashWithSword); 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); + AttackAbility sideKick = new AttackAbility(animator, Anim_SideKick); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // actions + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ActionTurn180 turn180 = new ActionTurn180(this.transform); ActionTowardLeft towardLeft = new ActionTowardLeft(this.transform); ActionTowardRight towardRight = new ActionTowardRight(this.transform); @@ -51,44 +56,75 @@ public partial class SaionjiScript : MonoBehaviour ActionSwitchAbility switchToAttk3 = new ActionSwitchAbility(m_AbilitySystem, attk3); ActionSwitchAbility switchToAttk4 = new ActionSwitchAbility(m_AbilitySystem, attk4); ActionSwitchAbility switchToAttk5 = new ActionSwitchAbility(m_AbilitySystem, attk5); + ActionSwitchAbility switchToSideKick = new ActionSwitchAbility(m_AbilitySystem, sideKick); + ActionSwitchAbility switchToDash = new ActionSwitchAbility(m_AbilitySystem, dash); + ActionWipeCmdRecord wipeCmdRecord = new ActionWipeCmdRecord(); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // conditions + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ConditionCommand condLeftCmd = new ConditionCommand(GamepadButton.Left); ConditionCommand condRightCmd = new ConditionCommand(GamepadButton.Right); ConditionNoMoveButtonHold condNoMoveButtonHold = new ConditionNoMoveButtonHold(); ConditionButtonHold condRightButtonHold = new ConditionButtonHold(GamepadButton.Right); ConditionButtonHold condLeftButtonHold = new ConditionButtonHold(GamepadButton.Left); ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle); + ConditionCommand condCrossCmd = new ConditionCommand(GamepadButton.Cross); ConditionTowardLeft condTowardLeft = new ConditionTowardLeft(this.transform); ConditionTowardRight condTowardRight = new ConditionTowardRight(this.transform); + ConditionCommandSeq condRight2Cmd = new ConditionCommandSeq(new List{GamepadButton.Right, GamepadButton.Right }, 1f); + ConditionCommandSeq condLeft2Cmd = new ConditionCommandSeq(new List{GamepadButton.Left, GamepadButton.Left }, 1f); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // common triggers - Trigger triggerTurnRight = new Trigger(condRightCmd, towardRight); - Trigger triggerTurnLeft = new Trigger(condLeftCmd, towardLeft); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + Trigger triggerTurnRight = new Trigger(And(condRightButtonHold, Not(condTowardRight)), towardRight); + Trigger triggerTurnLeft = new Trigger(And(condLeftButtonHold, Not(condTowardLeft)), towardLeft); Trigger trigger = null; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ability setup + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // idle ability - trigger = new Trigger(condRightCmd, new List { switchToMove, towardRight}); + trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List { wipeCmdRecord , switchToDash }); + idle.AddTrigger(trigger); + trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List { wipeCmdRecord , switchToDash }); idle.AddTrigger(trigger); - trigger = new Trigger(condLeftCmd, new List { switchToMove, towardLeft}); + trigger = new Trigger(And(condRightButtonHold, Not(condRight2Cmd)), new List { switchToMove, towardRight }); + idle.AddTrigger(trigger); + trigger = new Trigger(And(condLeftButtonHold, Not(condLeft2Cmd)), new List { switchToMove, towardLeft }); idle.AddTrigger(trigger); trigger = new Trigger(condCircleCmd, switchToAttk1); idle.AddTrigger(trigger); + trigger = new Trigger(condCrossCmd, switchToSideKick); + idle.AddTrigger(trigger); trigger = new Trigger(condLeftCmd, turn180); idle.AddTrigger(trigger); // move ability + trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List { wipeCmdRecord, switchToDash, }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List { wipeCmdRecord, switchToDash }); + move.AddTrigger(trigger); trigger = new Trigger(And(condTowardRight, Not(condRightButtonHold)), switchToIdle); move.AddTrigger(trigger); trigger = new Trigger(And(condTowardLeft, Not(condLeftButtonHold)), switchToIdle); move.AddTrigger(trigger); trigger = new Trigger(condCircleCmd, switchToAttk1); move.AddTrigger(trigger); + trigger = new Trigger(condCrossCmd, switchToSideKick); + move.AddTrigger(trigger); + + // dash ability + trigger = new Trigger(new ConditionAnimAtEnd(animator, Anim_DashWithSword), switchToIdle); + dash.AddTrigger(trigger); // attack abilities float expireTime = 0.3f; - + ConditionAnimAtEnd condAttk1AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack1); trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2); attk1.AddTrigger(trigger); @@ -134,6 +170,10 @@ public partial class SaionjiScript : MonoBehaviour attk5.AddTrigger(triggerTurnRight); attk5.AddTrigger(triggerTurnLeft); + ConditionAttkExpireTime condSideKickExpireTime = new ConditionAttkExpireTime(sideKick, expireTime); + trigger = new Trigger(condSideKickExpireTime, switchToIdle); + sideKick.AddTrigger(trigger); + m_AbilitySystem.ForceStart(idle); } -- cgit v1.1-26-g67d0