summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Test
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Test')
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript.cs17
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript_Anim.cs31
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript_Anim.cs.meta11
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript_States.cs53
-rw-r--r--Assets/Scripts/Test/ArmorSoldierScript_States.cs.meta11
-rw-r--r--Assets/Scripts/Test/SaionjiScript.cs10
-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.cs8
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()