using System.Collections; using System.Collections.Generic; using UnityEngine; public partial class SaionjiScript : MonoBehaviour { /// /// ability system /// AbilitySystem m_AbilitySystem = new AbilitySystem(); ConditionBase And(ConditionBase c1, ConditionBase c2) { return new ConditionAnd(c1, c2); } ConditionBase Or(ConditionBase c1, ConditionBase c2) { return new ConditionOr(c1,c2); } /// /// 设置abilities /// void SetupAbilities() { 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); 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); } }