diff options
Diffstat (limited to 'Assets/Scripts/Test')
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript.cs | 17 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript_Anim.cs | 31 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript_Anim.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript_States.cs | 53 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript_States.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript.cs | 10 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript_States.cs (renamed from Assets/Scripts/Test/SaionjiScript_Ability.cs) | 785 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript_States.cs.meta (renamed from Assets/Scripts/Test/SaionjiScript_Ability.cs.meta) | 0 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiUberAbility.cs | 8 |
9 files changed, 507 insertions, 419 deletions
diff --git a/Assets/Scripts/Test/ArmorSoldierScript.cs b/Assets/Scripts/Test/ArmorSoldierScript.cs index b6863a23..dd4cd3e3 100644 --- a/Assets/Scripts/Test/ArmorSoldierScript.cs +++ b/Assets/Scripts/Test/ArmorSoldierScript.cs @@ -2,14 +2,21 @@ using System.Collections.Generic; using UnityEngine; -public class ArmorSoldierScript : Avatar +public partial class ArmorSoldierScript : Avatar, IInteractable { - int Anim_HurtFront; + public Animator m_Animator; + + void Awake()
+ {
+ m_Animator = GetComponent<Animator>();
+ } private void Start()
{
- base.Init();
- Anim_HurtFront = Animator.StringToHash("Hurt_Front");
+ base.Init();
+
+ SetupAnim();
+ SetupStates();
}
private void OnAnimatorMove() @@ -32,8 +39,6 @@ public class ArmorSoldierScript : Avatar public void Hurt()
{
- Animator animator = GetComponent<Animator>(); - animator.CrossFade(Anim_HurtFront, 0);
} public override void OnHurt(HurtInfo hurtInfo)
diff --git a/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs b/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs new file mode 100644 index 00000000..cf21a504 --- /dev/null +++ b/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public partial class ArmorSoldierScript : Avatar, IInteractable +{ + int Anim_Idle; + + int Anim_HurtFront; + + int Anim_LightHurt; + int Anim_MidiumHurt; + int Anim_HeavyHurt; + int Anim_GroundHurt; + int Anim_AirHurt; + + + void SetupAnim() + { + Anim_Idle = Animator.StringToHash("Idle"); + + Anim_HurtFront = Animator.StringToHash("Hurt_Front"); + Anim_LightHurt = Animator.StringToHash("Hurt_Light"); + Anim_MidiumHurt = Animator.StringToHash("Hurt_Midium"); + Anim_HeavyHurt = Animator.StringToHash("Hurt_Heavy"); + Anim_GroundHurt = Animator.StringToHash("Hurt_Ground"); + Anim_AirHurt = Animator.StringToHash("Hurt_Air"); + + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs.meta b/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs.meta new file mode 100644 index 00000000..212feda4 --- /dev/null +++ b/Assets/Scripts/Test/ArmorSoldierScript_Anim.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ff0f58fdd1c9834e858aa0dda2b0ff8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Test/ArmorSoldierScript_States.cs b/Assets/Scripts/Test/ArmorSoldierScript_States.cs new file mode 100644 index 00000000..67eca581 --- /dev/null +++ b/Assets/Scripts/Test/ArmorSoldierScript_States.cs @@ -0,0 +1,53 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public partial class ArmorSoldierScript : Avatar, IInteractable +{ + + void SetupStates() + { + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // states + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + IdleState idle = new IdleState(m_Animator, Anim_Idle); + + HurtState lightHurt = new HurtState(m_Animator, Anim_LightHurt); + HurtState midiumHurt = new HurtState(m_Animator, Anim_MidiumHurt); + HurtState heavyHurt = new HurtState(m_Animator, Anim_HeavyHurt); + HurtState groundHurt = new HurtState(m_Animator, Anim_GroundHurt); + HurtState airHurt = new HurtState(m_Animator, Anim_AirHurt); + m_StateLightHurt = lightHurt; + m_StateMidiumHurt = midiumHurt; + m_StateHeavyHurt = heavyHurt; + m_StateGroundHurt = groundHurt; + m_StateAirHurt = airHurt; + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // conditions + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ConditionInAir condInAir = new ConditionInAir(m_BodyCollider); + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // actions + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ActionSwitchState switchToIdle = new ActionSwitchState(m_StateSystem, idle); + + Trigger trigger = null; + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // state setup + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // air hurt + ConditionMotionAtEnd airAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_AirHurt); + trigger = new Trigger(And(airAtEnd, Not(condInAir)), switchToIdle); + airHurt.AddTrigger(trigger); + + m_StateSystem.ForceStart(idle); + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/Test/ArmorSoldierScript_States.cs.meta b/Assets/Scripts/Test/ArmorSoldierScript_States.cs.meta new file mode 100644 index 00000000..02336b68 --- /dev/null +++ b/Assets/Scripts/Test/ArmorSoldierScript_States.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f146c570f99fe2e4aad5f1312524413c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Test/SaionjiScript.cs b/Assets/Scripts/Test/SaionjiScript.cs index e2386350..4e3bf23f 100644 --- a/Assets/Scripts/Test/SaionjiScript.cs +++ b/Assets/Scripts/Test/SaionjiScript.cs @@ -24,7 +24,7 @@ public partial class SaionjiScript : Avatar [SerializeField]
private Weapon m_Weapon;
- public bool EnableAbilitySystem;
+ public bool EnableStateSystem;
public EffectHandler[] Effects;
@@ -45,14 +45,14 @@ public partial class SaionjiScript : Avatar GetAnimHash();
- if (EnableAbilitySystem)
- SetupAbilities();
+ if (EnableStateSystem)
+ SetupStates();
}
//private void Update()
//{
- // //if (EnableAbilitySystem)
- // // m_AbilitySystem.OnUpdate();
+ // //if (EnableStateSystem)
+ // // m_StateSystem.OnUpdate();
//}
// 更新顺序:
diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_States.cs index 5fc92f62..68d09280 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_States.cs @@ -1,405 +1,382 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public partial class SaionjiScript : Avatar
-{
-
- ConditionBase Not(ConditionBase cond)
- {
- return new ConditionNot(cond);
- }
-
- ConditionBase And(ConditionBase c1, ConditionBase c2)
- {
- return new ConditionAnd(c1, c2);
- }
-
- ConditionBase Ands(params ConditionBase[] cond)
- {
- List<ConditionBase> conditions = new List<ConditionBase>();
- for(int i = 0;i < cond.Length; ++i)
- {
- conditions.Add(cond[i]);
- }
- ConditionMultiAnd and = new ConditionMultiAnd(conditions);
- return and;
- }
-
- ConditionBase Or(ConditionBase c1, ConditionBase c2)
- {
- return new ConditionOr(c1,c2);
- }
-
- /// <summary>
- /// 设置abilities
- /// </summary>
- void SetupAbilities()
- {
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // abilities
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- IdleAbility idle = new IdleAbility(animator, Anim_Idle);
-
- MoveAbility move = new MoveAbility(animator, Anim_Run);
- MoveAbility dash = new MoveAbility(animator, Anim_DashWithSword);
-
- JumpAbilityConfig jumpConfig = new JumpAbilityConfig
- {
- animator = animator,
- collider = m_BodyCollider,
- body = m_Body,
- neutralJumpSpeedY = 13f,
- fowardJumpSpeedX = 5f,
- backwardJumpSpeedX = -5f,
- animJump = Anim_JumpStart,
- animJumpEnd = Anim_JumpEnd,
- animNU = Anim_JumpUp,
- animND = Anim_JumpDown,
- animFU = Anim_JumpUp,
- animFD = Anim_JumpDown,
- animBU = Anim_JumpUp,
- animBD = Anim_JumpDown,
- skipStart = true,
- };
- JumpAbility jump = new JumpAbility(jumpConfig);
-
- AttackAbility airDash = new AttackAbility(animator, Anim_AirDash, m_Body);
-
- AttackAbilityConfig config;
-
- //招式会绑定一个motion
- HitDefination hitDef = new HitDefination
- {
- };
- AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1, m_Body);
- attk1.AddHitDefination(hitDef);
- AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2, m_Body);
- attk2.AddHitDefination(hitDef);
- AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3, m_Body);
- attk3.AddHitDefination(hitDef);
- AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4, m_Body);
- attk4.AddHitDefination(hitDef);
- AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5, m_Body);
- attk5.AddHitDefination(hitDef);
- AttackAbility attkRush = new AttackAbility(animator, Anim_LightAttackRush, m_Body);
-
- config = new AttackAbilityConfig() {
- animator = this.animator,
- body = this.m_Body,
- motion = Anim_SideKick,
- velocity = new Vector3(20, 1.5f, 0)
- };
- AttackAbility sideKick = new AttackAbility(config);
-
- AttackAbility sideKickRush = new AttackAbility(animator, Anim_SideKickRush, m_Body);
- AttackAbility superKick = new AttackAbility(animator, Anim_SuperKick, m_Body);
- AttackAbility gun1 = new AttackAbility(animator, Anim_Gun1, m_Body);
- AttackAbility gun2 = new AttackAbility(animator, Anim_Gun2, m_Body);
- AttackAbility gun3 = new AttackAbility(animator, Anim_Gun3, m_Body);
- AttackAbility gun4 = new AttackAbility(animator, Anim_Gun4, m_Body);
-
- AttackAbility airAttk1 = new AttackAbility(animator, Anim_AirAttack1, m_Body);
- hitDef = new HitDefination
- {
- hurtAddForce = new Vector3(1000,2000,0)
- };
- airAttk1.AddHitDefination(hitDef);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // actions
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ActionTurn180 turn180 = new ActionTurn180(this.transform);
- ActionTowardLeft towardLeft = new ActionTowardLeft(this.transform);
- ActionTowardRight towardRight = new ActionTowardRight(this.transform);
-
- ActionJump toJump = new ActionJump(m_AbilitySystem, jump);
- ActionJumpForward toJumpForward = new ActionJumpForward(m_AbilitySystem, jump);
-
- 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);
- ActionSwitchAbility switchToAttkRush = new ActionSwitchAbility(m_AbilitySystem, attkRush);
- ActionSwitchAbility switchToSideKick = new ActionSwitchAbility(m_AbilitySystem, sideKick);
- ActionSwitchAbility switchToSideKickRush = new ActionSwitchAbility(m_AbilitySystem, sideKickRush);
- ActionSwitchAbility switchToDash = new ActionSwitchAbility(m_AbilitySystem, dash);
- ActionSwitchAbility switchToSuperKick = new ActionSwitchAbility(m_AbilitySystem, superKick);
- ActionSwitchAbility switchToGun1 = new ActionSwitchAbility(m_AbilitySystem, gun1);
- ActionSwitchAbility switchToGun2 = new ActionSwitchAbility(m_AbilitySystem, gun2);
- ActionSwitchAbility switchToGun3 = new ActionSwitchAbility(m_AbilitySystem, gun3);
- ActionSwitchAbility switchToGun4 = new ActionSwitchAbility(m_AbilitySystem, gun4);
-
- ActionSwitchAbility switchToAirDash = new ActionSwitchAbility(m_AbilitySystem, airDash);
- ActionSwitchAbility switchToAirAttk1 = new ActionSwitchAbility(m_AbilitySystem, airAttk1);
-
- ActionWipeCmdRecord wipeCmdRecord = new ActionWipeCmdRecord();
-
- ActionEffectGhost enableGhost = new ActionEffectGhost(Effects[0] as CharacterGhostEffect);
- ActionDisableGhost disableGhost = new ActionDisableGhost(Effects[0] as CharacterGhostEffect);
-
- ActionActivateAfterImage enableAfterImage = new ActionActivateAfterImage(true);
- ActionActivateAfterImage disaleAfterImage = new ActionActivateAfterImage(false);
- ActionAfterImageInterval smallAfterImageInterval = new ActionAfterImageInterval(2);
- ActionAfterImageInterval midiumAfterImageInterval = new ActionAfterImageInterval(5);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // 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 condUpCmd = new ConditionCommand(GamepadButton.Up);
- ConditionCommand condTriangleCmd = new ConditionCommand(GamepadButton.Triangle);
- ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle);
- ConditionCommand condCrossCmd = new ConditionCommand(GamepadButton.Cross);
- ConditionCommand condSquareCmd = new ConditionCommand(GamepadButton.Square);
- ConditionTowardLeft condTowardLeft = new ConditionTowardLeft(this.transform);
- ConditionTowardRight condTowardRight = new ConditionTowardRight(this.transform);
- ConditionCommandSeq condRight2Cmd = new ConditionCommandSeq(new List<GamepadButton>{GamepadButton.Right, GamepadButton.Right }, 0.8f);
- ConditionCommandSeq condLeft2Cmd = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Left, GamepadButton.Left }, 0.8f);
- ConditionCommandSeq condDRC = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Down, GamepadButton.Right, GamepadButton.Circle}, 1f);
- ConditionCommandSeq condDLC = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Down, GamepadButton.Left, GamepadButton.Circle}, 1f);
-
- ConditionHit condIsHit = new ConditionHit(this);
-
- ConditionJumpDone condJumpDone = new ConditionJumpDone(jump);
- ConditionJumpOnGround condJumpOnGround = new ConditionJumpOnGround(jump);
-
- ConditionInAir condInAir = new ConditionInAir(m_BodyCollider);
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // common triggers
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- Trigger triggerTurnRight = new Trigger(And(condRightCmd, Not(condTowardRight)), towardRight);
- Trigger triggerTurnLeft = new Trigger(And(condLeftCmd, Not(condTowardLeft)), towardLeft);
-
- Trigger trigger = null;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // ability setup
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- // idle ability
- trigger = new Trigger(condTriangleCmd, toJump) ;
- idle.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardRight, condDRC), new List<ActionBase> { wipeCmdRecord, switchToSuperKick });
- idle.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardLeft, condDLC), new List<ActionBase> { wipeCmdRecord, switchToSuperKick });
- idle.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash });
- idle.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash });
- idle.AddTrigger(trigger);
- trigger = new Trigger(condRightButtonHold, new List<ActionBase> { switchToMove, towardRight });
- idle.AddTrigger(trigger);
- trigger = new Trigger(condLeftButtonHold, new List<ActionBase> { switchToMove, towardLeft });
- idle.AddTrigger(trigger);
- trigger = new Trigger(condCircleCmd, switchToAttk1);
- idle.AddTrigger(trigger);
- trigger = new Trigger(condCrossCmd, switchToSideKick);
- idle.AddTrigger(trigger);
- trigger = new Trigger(condSquareCmd, switchToGun1);
- idle.AddTrigger(trigger);
- idle.AddTrigger(triggerTurnRight);
- idle.AddTrigger(triggerTurnLeft);
-
- // move ability
- //trigger = new Trigger(Or(Ands(condRightButtonHold, condTowardRight, condTriangleCmd), Ands(condLeftButtonHold, condTowardLeft, condTriangleCmd)), toJumpForward);
- //move.AddTrigger(trigger);
- trigger = new Trigger(condTriangleCmd, toJump);
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash, });
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash });
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condRightButtonHold, condCircleCmd), new List<ActionBase> { towardRight, switchToAttkRush });
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condLeftButtonHold, condCircleCmd), new List<ActionBase> { towardLeft, switchToAttkRush });
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condRightButtonHold, condCrossCmd), new List<ActionBase> { towardRight, switchToSideKickRush });
- move.AddTrigger(trigger);
- trigger = new Trigger(And(condLeftButtonHold, condCrossCmd), new List<ActionBase> { towardLeft, switchToSideKickRush });
- 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);
-
- // jump ability
- trigger = new Trigger(Ands(condInAir, condRightCmd, condRight2Cmd), new List<ActionBase> { towardRight, switchToAirDash, new ActionSetVelocity(m_Body, new Vector3(25, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, midiumAfterImageInterval});
- jump.AddTrigger(trigger);
- trigger = new Trigger(Ands(condInAir, condLeftCmd, condLeft2Cmd), new List<ActionBase> { towardLeft, switchToAirDash, new ActionSetVelocity(m_Body, new Vector3(-25, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, midiumAfterImageInterval });
- jump.AddTrigger(trigger);
- trigger = new Trigger(Ands(condInAir, condCircleCmd), new List<ActionBase> { switchToAirAttk1, new ActionSetLocalVelocity(m_Body, new Vector3(0, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, smallAfterImageInterval});
- jump.AddTrigger(trigger);
- ConditionCheckJumpState condCheckJump = new ConditionCheckJumpState(jump, JumpAbility.State.None, JumpAbility.Direction.Neutral);
- trigger = new Trigger(And(condRightButtonHold, condCheckJump), new List<ActionBase> { towardRight, new ActionSetVelocityX(m_Body, 4)}, TriggerOnlyOnce.Off, TriggerSwallow.Off);
- jump.AddTrigger(trigger);
- trigger = new Trigger(And(condLeftButtonHold, condCheckJump), new List<ActionBase> { towardLeft, new ActionSetVelocityX(m_Body,-4) }, TriggerOnlyOnce.Off, TriggerSwallow.Off);
- jump.AddTrigger(trigger);
- //trigger = new Trigger(Ands(condCheckJump, Not(condRightButtonHold), Not(condLeftButtonHold)), new ActionSetVelocityX(m_Body, 0), TriggerOnlyOnce.Off, TriggerSwallow.Off);
- //jump.AddTrigger(trigger);
- trigger = new Trigger(condJumpOnGround, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off);
- jump.AddTrigger(trigger);
- trigger = new Trigger(Ands(new ConditionJumpDone(jump, 0.4f), condJumpOnGround, Or(condRightButtonHold, condLeftButtonHold)), switchToMove);
- jump.AddTrigger(trigger);
- trigger = new Trigger(condJumpDone, switchToIdle);
- jump.AddTrigger(trigger);
-
- // dash ability
- trigger = new Trigger(And(new ConditionMotionRange(animator, 0.5f, 1.0f), condCircleCmd), switchToAttk1);
- dash.AddTrigger(trigger);
- trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_DashWithSword), switchToIdle);
- dash.AddTrigger(trigger);
-
- // attack abilities
- float expireTime = 0.3f;
-
- // sword normal attack
- ConditionMotionAtEnd condAttk1AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack1);
- trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2);
- attk1.AddTrigger(trigger);
- ConditionAttkExpireTime condAttk1ExpireTime = new ConditionAttkExpireTime(attk1, expireTime);
- trigger = new Trigger(condAttk1ExpireTime, switchToIdle);
- attk1.AddTrigger(trigger);
- attk1.AddTrigger(triggerTurnRight);
- attk1.AddTrigger(triggerTurnLeft);
- //trigger = new Trigger(condIsHit, new ActionLog("hit!!!"));
- //attk1.AddLateTrigger(trigger);
-
- //ConditionMotionRange condAttkRushGhostRange = new ConditionMotionRange(animator, 0f, 0.8f);
- //trigger = new Trigger(condAttkRushGhostRange, enableGhost, false);
- //attkRush.AddTrigger(trigger);
- //ConditionMotionRange condAttkRushGhostDisableRange = new ConditionMotionRange(animator, 0.8f, 10f);
- //trigger = new Trigger(condAttkRushGhostDisableRange, disableGhost, false);
- //attkRush.AddTrigger(trigger);
- ConditionMotionRange condAttkRushAtRange = new ConditionMotionRange(animator, 0.5f, 1f);
- trigger = new Trigger(And(condAttkRushAtRange, condCircleCmd), switchToAttk2);
- attkRush.AddTrigger(trigger);
- //trigger = new Trigger(And(And(condAttkRushAtRange, condTowardRight), condRightCmd), switchToAttkRush);
- //attkRush.AddTrigger(trigger);
- //trigger = new Trigger(And(And(condAttkRushAtRange, condTowardLeft), condLeftCmd), switchToAttkRush);
- //attkRush.AddTrigger(trigger);
- ConditionAttkExpireTime condAttkRushExpireTime = new ConditionAttkExpireTime(attkRush, expireTime);
- trigger = new Trigger(condAttkRushExpireTime, switchToIdle);
- attkRush.AddTrigger(trigger);
- //attkRush.AddTrigger(triggerTurnRight);
- //attkRush.AddTrigger(triggerTurnLeft);
-
- ConditionMotionAtEnd condAttk2AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack2);
- trigger = new Trigger(And(condAttk2AtEnd, condCircleCmd), switchToAttk3);
- attk2.AddTrigger(trigger);
- ConditionAttkExpireTime condAttk2ExpireTime = new ConditionAttkExpireTime(attk2, expireTime);
- trigger = new Trigger(condAttk2ExpireTime, switchToIdle);
- attk2.AddTrigger(trigger);
- attk2.AddTrigger(triggerTurnRight);
- attk2.AddTrigger(triggerTurnLeft);
-
- ConditionMotionAtEnd condAttk3AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack3);
- trigger = new Trigger(And(condAttk3AtEnd, condCircleCmd), switchToAttk4);
- attk3.AddTrigger(trigger);
- ConditionAttkExpireTime condAttk3ExpireTime = new ConditionAttkExpireTime(attk3, expireTime);
- trigger = new Trigger(condAttk3ExpireTime, switchToIdle);
- attk3.AddTrigger(trigger);
- attk3.AddTrigger(triggerTurnRight);
- attk3.AddTrigger(triggerTurnLeft);
-
- ConditionMotionAtEnd condAttk4AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack4);
- trigger = new Trigger(And(condAttk4AtEnd, condCircleCmd), switchToAttk5);
- attk4.AddTrigger(trigger);
- ConditionAttkExpireTime condAttk4ExpireTime = new ConditionAttkExpireTime(attk4, expireTime);
- trigger = new Trigger(condAttk4ExpireTime, switchToIdle);
- attk4.AddTrigger(trigger);
- attk4.AddTrigger(triggerTurnRight);
- attk4.AddTrigger(triggerTurnLeft);
-
- ConditionMotionAtEnd condAttk5AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack5);
- trigger = new Trigger(condAttk5AtEnd, switchToIdle);
- attk5.AddTrigger(trigger);
- ConditionAttkExpireTime condAttk5ExpireTime = new ConditionAttkExpireTime(attk5, expireTime);
- trigger = new Trigger(condAttk5ExpireTime, switchToIdle);
- attk5.AddTrigger(trigger);
- attk5.AddTrigger(triggerTurnRight);
- attk5.AddTrigger(triggerTurnLeft);
-
- // side kick normal
- ConditionMotionAtEnd condKickMotionEnd = new ConditionMotionAtEnd(animator, Anim_SideKick);
- trigger = new Trigger(condKickMotionEnd, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off);
- sideKick.AddTrigger(trigger);
- ConditionAttkExpireTime condSideKickExpireTime = new ConditionAttkExpireTime(sideKick, expireTime);
- trigger = new Trigger(condSideKickExpireTime, switchToIdle);
- sideKick.AddTrigger(trigger);
-
- // side kick rush
- ConditionAttkExpireTime condSideKickRushExpireTime = new ConditionAttkExpireTime(sideKickRush, expireTime);
- trigger = new Trigger(condSideKickRushExpireTime, switchToIdle);
- sideKickRush.AddTrigger(trigger);
- ConditionMotionRange condSideKickRushMotionRange = new ConditionMotionRange(animator, 0.5f, 10f);
- trigger = new Trigger(And(condSideKickRushMotionRange, And(condRightButtonHold, condCircleCmd)), new List<ActionBase> { towardRight, switchToAttkRush });
- sideKickRush.AddTrigger(trigger);
- trigger = new Trigger(And(condSideKickRushMotionRange, And(condLeftButtonHold, condCircleCmd)), new List<ActionBase> { towardLeft, switchToAttkRush });
- sideKickRush.AddTrigger(trigger);
-
- // super kick combo
- ConditionAttkExpireTime condSuperKickExpireTime = new ConditionAttkExpireTime(superKick, expireTime);
- trigger = new Trigger(condSuperKickExpireTime, switchToIdle);
- superKick.AddTrigger(trigger);
-
- // gun normal
- ConditionMotionAtEnd condGun1AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun1);
- trigger = new Trigger(And(condGun1AtEnd, condSquareCmd), switchToGun2);
- gun1.AddTrigger(trigger);
- ConditionAttkExpireTime condGun1ExpireTime = new ConditionAttkExpireTime(gun1, expireTime);
- trigger = new Trigger(condGun1ExpireTime, switchToIdle);
- gun1.AddTrigger(trigger);
-
- ConditionMotionAtEnd condGun2AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun2);
- trigger = new Trigger(And(condGun2AtEnd, condSquareCmd), switchToGun3);
- gun2.AddTrigger(trigger);
- ConditionAttkExpireTime condGun2ExpireTime = new ConditionAttkExpireTime(gun2, expireTime);
- trigger = new Trigger(condGun2ExpireTime, switchToIdle);
- gun2.AddTrigger(trigger);
-
- ConditionMotionAtEnd condGun3AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun3);
- trigger = new Trigger(And(condGun3AtEnd, condSquareCmd), switchToGun4);
- gun3.AddTrigger(trigger);
- ConditionAttkExpireTime condGun3ExpireTime = new ConditionAttkExpireTime(gun3, expireTime);
- trigger = new Trigger(condGun3ExpireTime, switchToIdle);
- gun3.AddTrigger(trigger);
-
- ConditionAttkExpireTime condGun4ExpireTime = new ConditionAttkExpireTime(gun4, expireTime);
- trigger = new Trigger(condGun4ExpireTime, switchToIdle);
- gun4.AddTrigger(trigger);
- ConditionMotionRange condGun4MotionRange = new ConditionMotionRange(animator, 0.6f, 1f);
- trigger = new Trigger(And(condGun4MotionRange, condRight2Cmd), new List<ActionBase> { switchToDash, towardRight });
- gun4.AddTrigger(trigger);
- trigger = new Trigger(And(condGun4MotionRange, condLeft2Cmd), new List<ActionBase> { switchToDash, towardLeft });
- gun4.AddTrigger(trigger);
-
- // air dash
- trigger = new Trigger(new ConditionMotionRange(animator, 0.8f, 1f), disaleAfterImage, TriggerOnlyOnce.On, TriggerSwallow.Off);
- airDash.AddTrigger(trigger);
- trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_AirDash), new List<ActionBase> { new ActionSetVelocity(m_Body, Vector3.zero), new ActionUseGravity(m_Body), toJump });
- airDash.AddTrigger(trigger);
-
- trigger = new Trigger(new ConditionMotionRange(animator, 0.18f, 1f), new ActionPlayEffect("Air_Attk1", this, new Vector3(-136.805f, 0, 0), new Vector3(0.8f, 0.8f, 0.8f)), TriggerOnlyOnce.On, TriggerSwallow.Off);
- airAttk1.AddTrigger(trigger);
- trigger = new Trigger(new ConditionMotionRange(animator, 0.6f,1f), disaleAfterImage, TriggerOnlyOnce.On, TriggerSwallow.Off);
- airAttk1.AddTrigger(trigger);
- trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_AirAttack1), new List<ActionBase> { new ActionSetVelocity(m_Body, Vector3.zero), new ActionUseGravity(m_Body), toJump});
- airAttk1.AddTrigger(trigger);
-
- m_AbilitySystem.ForceStart(idle);
- }
-
+using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public partial class SaionjiScript : Avatar +{ + + /// <summary> + /// 设置states + /// </summary> + void SetupStates() + { + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // states + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + IdleState idle = new IdleState(animator, Anim_Idle); + + MoveState move = new MoveState(animator, Anim_Run); + MoveState dash = new MoveState(animator, Anim_DashWithSword); + + JumpStateConfig jumpConfig = new JumpStateConfig + { + animator = animator, + collider = m_BodyCollider, + body = m_Body, + neutralJumpSpeedY = 13f, + fowardJumpSpeedX = 5f, + backwardJumpSpeedX = -5f, + animJump = Anim_JumpStart, + animJumpEnd = Anim_JumpEnd, + animNU = Anim_JumpUp, + animND = Anim_JumpDown, + animFU = Anim_JumpUp, + animFD = Anim_JumpDown, + animBU = Anim_JumpUp, + animBD = Anim_JumpDown, + skipStart = true, + }; + JumpState jump = new JumpState(jumpConfig); + + AttackState airDash = new AttackState(animator, Anim_AirDash, m_Body); + + AttackStateConfig config; + + //招式会绑定一个motion + HitDefination hitDef = new HitDefination + { + type = HitType.Air, + hurtAddForce = new Vector3(0, 10000, 0) + }; + AttackState attk1 = new AttackState(animator, Anim_LightAttack1, m_Body); + attk1.AddHitDefination(hitDef); + AttackState attk2 = new AttackState(animator, Anim_LightAttack2, m_Body); + attk2.AddHitDefination(hitDef); + AttackState attk3 = new AttackState(animator, Anim_LightAttack3, m_Body); + attk3.AddHitDefination(hitDef); + AttackState attk4 = new AttackState(animator, Anim_LightAttack4, m_Body); + attk4.AddHitDefination(hitDef); + AttackState attk5 = new AttackState(animator, Anim_LightAttack5, m_Body); + attk5.AddHitDefination(hitDef); + AttackState attkRush = new AttackState(animator, Anim_LightAttackRush, m_Body); + + config = new AttackStateConfig() { + animator = this.animator, + body = this.m_Body, + motion = Anim_SideKick, + velocity = new Vector3(20, 1.5f, 0) + }; + AttackState sideKick = new AttackState(config); + + AttackState sideKickRush = new AttackState(animator, Anim_SideKickRush, m_Body); + AttackState superKick = new AttackState(animator, Anim_SuperKick, m_Body); + AttackState gun1 = new AttackState(animator, Anim_Gun1, m_Body); + AttackState gun2 = new AttackState(animator, Anim_Gun2, m_Body); + AttackState gun3 = new AttackState(animator, Anim_Gun3, m_Body); + AttackState gun4 = new AttackState(animator, Anim_Gun4, m_Body); + + AttackState airAttk1 = new AttackState(animator, Anim_AirAttack1, m_Body); + hitDef = new HitDefination + { + type = HitType.Air, + hurtAddForce = new Vector3(0,5000,0) + }; + airAttk1.AddHitDefination(hitDef); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // actions + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ActionTurn180 turn180 = new ActionTurn180(this.transform); + ActionTowardLeft towardLeft = new ActionTowardLeft(this.transform); + ActionTowardRight towardRight = new ActionTowardRight(this.transform); + + ActionJump toJump = new ActionJump(m_StateSystem, jump); + ActionJumpForward toJumpForward = new ActionJumpForward(m_StateSystem, jump); + + ActionSwitchState switchToMove = new ActionSwitchState(m_StateSystem, move); + ActionSwitchState switchToIdle = new ActionSwitchState(m_StateSystem, idle); + ActionSwitchState switchToAttk1 = new ActionSwitchState(m_StateSystem, attk1); + ActionSwitchState switchToAttk2 = new ActionSwitchState(m_StateSystem, attk2); + ActionSwitchState switchToAttk3 = new ActionSwitchState(m_StateSystem, attk3); + ActionSwitchState switchToAttk4 = new ActionSwitchState(m_StateSystem, attk4); + ActionSwitchState switchToAttk5 = new ActionSwitchState(m_StateSystem, attk5); + ActionSwitchState switchToAttkRush = new ActionSwitchState(m_StateSystem, attkRush); + ActionSwitchState switchToSideKick = new ActionSwitchState(m_StateSystem, sideKick); + ActionSwitchState switchToSideKickRush = new ActionSwitchState(m_StateSystem, sideKickRush); + ActionSwitchState switchToDash = new ActionSwitchState(m_StateSystem, dash); + ActionSwitchState switchToSuperKick = new ActionSwitchState(m_StateSystem, superKick); + ActionSwitchState switchToGun1 = new ActionSwitchState(m_StateSystem, gun1); + ActionSwitchState switchToGun2 = new ActionSwitchState(m_StateSystem, gun2); + ActionSwitchState switchToGun3 = new ActionSwitchState(m_StateSystem, gun3); + ActionSwitchState switchToGun4 = new ActionSwitchState(m_StateSystem, gun4); + + ActionSwitchState switchToAirDash = new ActionSwitchState(m_StateSystem, airDash); + ActionSwitchState switchToAirAttk1 = new ActionSwitchState(m_StateSystem, airAttk1); + + ActionWipeCmdRecord wipeCmdRecord = new ActionWipeCmdRecord(); + + ActionEffectGhost enableGhost = new ActionEffectGhost(Effects[0] as CharacterGhostEffect); + ActionDisableGhost disableGhost = new ActionDisableGhost(Effects[0] as CharacterGhostEffect); + + ActionActivateAfterImage enableAfterImage = new ActionActivateAfterImage(true); + ActionActivateAfterImage disaleAfterImage = new ActionActivateAfterImage(false); + ActionAfterImageInterval smallAfterImageInterval = new ActionAfterImageInterval(2); + ActionAfterImageInterval midiumAfterImageInterval = new ActionAfterImageInterval(5); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // 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 condUpCmd = new ConditionCommand(GamepadButton.Up); + ConditionCommand condTriangleCmd = new ConditionCommand(GamepadButton.Triangle); + ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle); + ConditionCommand condCrossCmd = new ConditionCommand(GamepadButton.Cross); + ConditionCommand condSquareCmd = new ConditionCommand(GamepadButton.Square); + ConditionTowardLeft condTowardLeft = new ConditionTowardLeft(this.transform); + ConditionTowardRight condTowardRight = new ConditionTowardRight(this.transform); + ConditionCommandSeq condRight2Cmd = new ConditionCommandSeq(new List<GamepadButton>{GamepadButton.Right, GamepadButton.Right }, 0.8f); + ConditionCommandSeq condLeft2Cmd = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Left, GamepadButton.Left }, 0.8f); + ConditionCommandSeq condDRC = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Down, GamepadButton.Right, GamepadButton.Circle}, 1f); + ConditionCommandSeq condDLC = new ConditionCommandSeq(new List<GamepadButton> { GamepadButton.Down, GamepadButton.Left, GamepadButton.Circle}, 1f); + + ConditionHit condIsHit = new ConditionHit(this); + + ConditionJumpDone condJumpDone = new ConditionJumpDone(jump); + ConditionJumpOnGround condJumpOnGround = new ConditionJumpOnGround(jump); + + ConditionInAir condInAir = new ConditionInAir(m_BodyCollider); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // common triggers + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + Trigger triggerTurnRight = new Trigger(And(condRightCmd, Not(condTowardRight)), towardRight); + Trigger triggerTurnLeft = new Trigger(And(condLeftCmd, Not(condTowardLeft)), towardLeft); + + Trigger trigger = null; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // state setup + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // idle state + trigger = new Trigger(condTriangleCmd, toJump) ; + idle.AddTrigger(trigger); + trigger = new Trigger(And(condTowardRight, condDRC), new List<ActionBase> { wipeCmdRecord, switchToSuperKick }); + idle.AddTrigger(trigger); + trigger = new Trigger(And(condTowardLeft, condDLC), new List<ActionBase> { wipeCmdRecord, switchToSuperKick }); + idle.AddTrigger(trigger); + trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash }); + idle.AddTrigger(trigger); + trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash }); + idle.AddTrigger(trigger); + trigger = new Trigger(condRightButtonHold, new List<ActionBase> { switchToMove, towardRight }); + idle.AddTrigger(trigger); + trigger = new Trigger(condLeftButtonHold, new List<ActionBase> { switchToMove, towardLeft }); + idle.AddTrigger(trigger); + trigger = new Trigger(condCircleCmd, switchToAttk1); + idle.AddTrigger(trigger); + trigger = new Trigger(condCrossCmd, switchToSideKick); + idle.AddTrigger(trigger); + trigger = new Trigger(condSquareCmd, switchToGun1); + idle.AddTrigger(trigger); + idle.AddTrigger(triggerTurnRight); + idle.AddTrigger(triggerTurnLeft); + + // move state + //trigger = new Trigger(Or(Ands(condRightButtonHold, condTowardRight, condTriangleCmd), Ands(condLeftButtonHold, condTowardLeft, condTriangleCmd)), toJumpForward); + //move.AddTrigger(trigger); + trigger = new Trigger(condTriangleCmd, toJump); + move.AddTrigger(trigger); + trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash, }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condRightButtonHold, condCircleCmd), new List<ActionBase> { towardRight, switchToAttkRush }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condLeftButtonHold, condCircleCmd), new List<ActionBase> { towardLeft, switchToAttkRush }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condRightButtonHold, condCrossCmd), new List<ActionBase> { towardRight, switchToSideKickRush }); + move.AddTrigger(trigger); + trigger = new Trigger(And(condLeftButtonHold, condCrossCmd), new List<ActionBase> { towardLeft, switchToSideKickRush }); + 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); + + // jump state + trigger = new Trigger(condJumpOnGround, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off); + jump.AddTrigger(trigger); + trigger = new Trigger(Ands(condInAir, condRightCmd, condRight2Cmd), new List<ActionBase> { towardRight, switchToAirDash, new ActionSetVelocity(m_Body, new Vector3(25, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, midiumAfterImageInterval}); + jump.AddTrigger(trigger); + trigger = new Trigger(Ands(condInAir, condLeftCmd, condLeft2Cmd), new List<ActionBase> { towardLeft, switchToAirDash, new ActionSetVelocity(m_Body, new Vector3(-25, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, midiumAfterImageInterval }); + jump.AddTrigger(trigger); + trigger = new Trigger(Ands(condInAir, condCircleCmd), new List<ActionBase> { switchToAirAttk1, new ActionSetLocalVelocity(m_Body, new Vector3(0, 0, 0)), new ActionDontUseGravity(m_Body), enableAfterImage, smallAfterImageInterval}); + jump.AddTrigger(trigger); + ConditionCheckJumpState condCheckJump = new ConditionCheckJumpState(jump, JumpState.Stage.None, JumpState.Direction.Neutral); + trigger = new Trigger(And(condRightButtonHold, condCheckJump), new List<ActionBase> { towardRight, new ActionSetVelocityX(m_Body, 4)}, TriggerOnlyOnce.Off, TriggerSwallow.Off); + jump.AddTrigger(trigger); + trigger = new Trigger(And(condLeftButtonHold, condCheckJump), new List<ActionBase> { towardLeft, new ActionSetVelocityX(m_Body,-4) }, TriggerOnlyOnce.Off, TriggerSwallow.Off); + jump.AddTrigger(trigger); + //trigger = new Trigger(Ands(condCheckJump, Not(condRightButtonHold), Not(condLeftButtonHold)), new ActionSetVelocityX(m_Body, 0), TriggerOnlyOnce.Off, TriggerSwallow.Off); + //jump.AddTrigger(trigger); + trigger = new Trigger(Ands(new ConditionJumpDone(jump, 0.4f), condJumpOnGround, Or(condRightButtonHold, condLeftButtonHold)), switchToMove); + jump.AddTrigger(trigger); + trigger = new Trigger(condJumpDone, switchToIdle); + jump.AddTrigger(trigger); + + // dash state + trigger = new Trigger(And(new ConditionMotionRange(animator, 0.5f, 1.0f), condCircleCmd), switchToAttk1); + dash.AddTrigger(trigger); + trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_DashWithSword), switchToIdle); + dash.AddTrigger(trigger); + + // attack states + float expireTime = 0.3f; + + // sword normal attack + ConditionMotionAtEnd condAttk1AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack1); + trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2); + attk1.AddTrigger(trigger); + ConditionAttkExpireTime condAttk1ExpireTime = new ConditionAttkExpireTime(attk1, expireTime); + trigger = new Trigger(condAttk1ExpireTime, switchToIdle); + attk1.AddTrigger(trigger); + attk1.AddTrigger(triggerTurnRight); + attk1.AddTrigger(triggerTurnLeft); + //trigger = new Trigger(condIsHit, new ActionLog("hit!!!")); + //attk1.AddLateTrigger(trigger); + + //ConditionMotionRange condAttkRushGhostRange = new ConditionMotionRange(animator, 0f, 0.8f); + //trigger = new Trigger(condAttkRushGhostRange, enableGhost, false); + //attkRush.AddTrigger(trigger); + //ConditionMotionRange condAttkRushGhostDisableRange = new ConditionMotionRange(animator, 0.8f, 10f); + //trigger = new Trigger(condAttkRushGhostDisableRange, disableGhost, false); + //attkRush.AddTrigger(trigger); + ConditionMotionRange condAttkRushAtRange = new ConditionMotionRange(animator, 0.5f, 1f); + trigger = new Trigger(And(condAttkRushAtRange, condCircleCmd), switchToAttk2); + attkRush.AddTrigger(trigger); + //trigger = new Trigger(And(And(condAttkRushAtRange, condTowardRight), condRightCmd), switchToAttkRush); + //attkRush.AddTrigger(trigger); + //trigger = new Trigger(And(And(condAttkRushAtRange, condTowardLeft), condLeftCmd), switchToAttkRush); + //attkRush.AddTrigger(trigger); + ConditionAttkExpireTime condAttkRushExpireTime = new ConditionAttkExpireTime(attkRush, expireTime); + trigger = new Trigger(condAttkRushExpireTime, switchToIdle); + attkRush.AddTrigger(trigger); + //attkRush.AddTrigger(triggerTurnRight); + //attkRush.AddTrigger(triggerTurnLeft); + + ConditionMotionAtEnd condAttk2AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack2); + trigger = new Trigger(And(condAttk2AtEnd, condCircleCmd), switchToAttk3); + attk2.AddTrigger(trigger); + ConditionAttkExpireTime condAttk2ExpireTime = new ConditionAttkExpireTime(attk2, expireTime); + trigger = new Trigger(condAttk2ExpireTime, switchToIdle); + attk2.AddTrigger(trigger); + attk2.AddTrigger(triggerTurnRight); + attk2.AddTrigger(triggerTurnLeft); + + ConditionMotionAtEnd condAttk3AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack3); + trigger = new Trigger(And(condAttk3AtEnd, condCircleCmd), switchToAttk4); + attk3.AddTrigger(trigger); + ConditionAttkExpireTime condAttk3ExpireTime = new ConditionAttkExpireTime(attk3, expireTime); + trigger = new Trigger(condAttk3ExpireTime, switchToIdle); + attk3.AddTrigger(trigger); + attk3.AddTrigger(triggerTurnRight); + attk3.AddTrigger(triggerTurnLeft); + + ConditionMotionAtEnd condAttk4AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack4); + trigger = new Trigger(And(condAttk4AtEnd, condCircleCmd), switchToAttk5); + attk4.AddTrigger(trigger); + ConditionAttkExpireTime condAttk4ExpireTime = new ConditionAttkExpireTime(attk4, expireTime); + trigger = new Trigger(condAttk4ExpireTime, switchToIdle); + attk4.AddTrigger(trigger); + attk4.AddTrigger(triggerTurnRight); + attk4.AddTrigger(triggerTurnLeft); + + ConditionMotionAtEnd condAttk5AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack5); + trigger = new Trigger(condAttk5AtEnd, switchToIdle); + attk5.AddTrigger(trigger); + ConditionAttkExpireTime condAttk5ExpireTime = new ConditionAttkExpireTime(attk5, expireTime); + trigger = new Trigger(condAttk5ExpireTime, switchToIdle); + attk5.AddTrigger(trigger); + attk5.AddTrigger(triggerTurnRight); + attk5.AddTrigger(triggerTurnLeft); + + // side kick normal + ConditionMotionAtEnd condKickMotionEnd = new ConditionMotionAtEnd(animator, Anim_SideKick); + trigger = new Trigger(condKickMotionEnd, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off); + sideKick.AddTrigger(trigger); + ConditionAttkExpireTime condSideKickExpireTime = new ConditionAttkExpireTime(sideKick, expireTime); + trigger = new Trigger(condSideKickExpireTime, switchToIdle); + sideKick.AddTrigger(trigger); + + // side kick rush + ConditionAttkExpireTime condSideKickRushExpireTime = new ConditionAttkExpireTime(sideKickRush, expireTime); + trigger = new Trigger(condSideKickRushExpireTime, switchToIdle); + sideKickRush.AddTrigger(trigger); + ConditionMotionRange condSideKickRushMotionRange = new ConditionMotionRange(animator, 0.5f, 10f); + trigger = new Trigger(And(condSideKickRushMotionRange, And(condRightButtonHold, condCircleCmd)), new List<ActionBase> { towardRight, switchToAttkRush }); + sideKickRush.AddTrigger(trigger); + trigger = new Trigger(And(condSideKickRushMotionRange, And(condLeftButtonHold, condCircleCmd)), new List<ActionBase> { towardLeft, switchToAttkRush }); + sideKickRush.AddTrigger(trigger); + + // super kick combo + ConditionAttkExpireTime condSuperKickExpireTime = new ConditionAttkExpireTime(superKick, expireTime); + trigger = new Trigger(condSuperKickExpireTime, switchToIdle); + superKick.AddTrigger(trigger); + + // gun normal + ConditionMotionAtEnd condGun1AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun1); + trigger = new Trigger(And(condGun1AtEnd, condSquareCmd), switchToGun2); + gun1.AddTrigger(trigger); + ConditionAttkExpireTime condGun1ExpireTime = new ConditionAttkExpireTime(gun1, expireTime); + trigger = new Trigger(condGun1ExpireTime, switchToIdle); + gun1.AddTrigger(trigger); + + ConditionMotionAtEnd condGun2AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun2); + trigger = new Trigger(And(condGun2AtEnd, condSquareCmd), switchToGun3); + gun2.AddTrigger(trigger); + ConditionAttkExpireTime condGun2ExpireTime = new ConditionAttkExpireTime(gun2, expireTime); + trigger = new Trigger(condGun2ExpireTime, switchToIdle); + gun2.AddTrigger(trigger); + + ConditionMotionAtEnd condGun3AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun3); + trigger = new Trigger(And(condGun3AtEnd, condSquareCmd), switchToGun4); + gun3.AddTrigger(trigger); + ConditionAttkExpireTime condGun3ExpireTime = new ConditionAttkExpireTime(gun3, expireTime); + trigger = new Trigger(condGun3ExpireTime, switchToIdle); + gun3.AddTrigger(trigger); + + ConditionAttkExpireTime condGun4ExpireTime = new ConditionAttkExpireTime(gun4, expireTime); + trigger = new Trigger(condGun4ExpireTime, switchToIdle); + gun4.AddTrigger(trigger); + ConditionMotionRange condGun4MotionRange = new ConditionMotionRange(animator, 0.6f, 1f); + trigger = new Trigger(And(condGun4MotionRange, condRight2Cmd), new List<ActionBase> { switchToDash, towardRight }); + gun4.AddTrigger(trigger); + trigger = new Trigger(And(condGun4MotionRange, condLeft2Cmd), new List<ActionBase> { switchToDash, towardLeft }); + gun4.AddTrigger(trigger); + + // air dash + trigger = new Trigger(new ConditionMotionRange(animator, 0.8f, 1f), disaleAfterImage, TriggerOnlyOnce.On, TriggerSwallow.Off); + airDash.AddTrigger(trigger); + trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_AirDash), new List<ActionBase> { new ActionSetVelocity(m_Body, Vector3.zero), new ActionUseGravity(m_Body), toJump }); + airDash.AddTrigger(trigger); + + trigger = new Trigger(new ConditionMotionRange(animator, 0.18f, 1f), new ActionPlayEffect("Air_Attk1", this, new Vector3(-136.805f, 0, 0), new Vector3(0.8f, 0.8f, 0.8f)), TriggerOnlyOnce.On, TriggerSwallow.Off); + airAttk1.AddTrigger(trigger); + trigger = new Trigger(new ConditionMotionRange(animator, 0.6f,1f), disaleAfterImage, TriggerOnlyOnce.On, TriggerSwallow.Off); + airAttk1.AddTrigger(trigger); + trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_AirAttack1), new List<ActionBase> { new ActionSetVelocity(m_Body, Vector3.zero), new ActionUseGravity(m_Body), toJump}); + airAttk1.AddTrigger(trigger); + + m_StateSystem.ForceStart(idle); + } + }
\ No newline at end of file diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs.meta b/Assets/Scripts/Test/SaionjiScript_States.cs.meta index 10e51e09..10e51e09 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs.meta +++ b/Assets/Scripts/Test/SaionjiScript_States.cs.meta diff --git a/Assets/Scripts/Test/SaionjiUberAbility.cs b/Assets/Scripts/Test/SaionjiUberAbility.cs index b1f39938..aef538a2 100644 --- a/Assets/Scripts/Test/SaionjiUberAbility.cs +++ b/Assets/Scripts/Test/SaionjiUberAbility.cs @@ -2,15 +2,15 @@ using System.Collections.Generic;
using UnityEngine;
-public class SaionjiUberAbility : UberAbility
+public class SaionjiUberState : UberState
{
Avatar m_Avatar;
- AbilitySystem m_AbilitySystem;
+ StateSystem m_StateSystem;
- public SaionjiUberAbility(Avatar avatar, AbilitySystem system)
+ public SaionjiUberState(Avatar avatar, StateSystem system)
{
m_Avatar = avatar;
- m_AbilitySystem = system;
+ m_StateSystem = system;
}
public override void OnUpdate()
|