Ejemplo n.º 1
0
 private void Awake()
 {
     _shooter = GetComponent <Shooter>();
     // states
     IdleState    = new ShooterIdleState(this, _shooter);
     AggroState   = new ShooterAggroState(this, _shooter);
     HitStunState = new ShooterHitStunState(this, _shooter);
 }
Ejemplo n.º 2
0
    private void BuildFSM()
    {
        ShooterIdleState idle = new ShooterIdleState(this);

        idle.AddTransition(TransitionID.StartRoaming, StateID.Roaming);
        idle.AddTransition(TransitionID.SawTarget, StateID.ChasingTarget);
        idle.AddTransition(TransitionID.StartHurt, StateID.Hurt);
        idle.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterRoamState roam = new ShooterRoamState(this);

        roam.AddTransition(TransitionID.StopRoaming, StateID.Idle);
        roam.AddTransition(TransitionID.SawTarget, StateID.ChasingTarget);
        roam.AddTransition(TransitionID.StartHurt, StateID.Hurt);
        roam.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterChaseState chaseTarget = new ShooterChaseState(this);

        chaseTarget.AddTransition(TransitionID.LostTarget, StateID.Roaming);
        chaseTarget.AddTransition(TransitionID.InRange, StateID.Attack);
        chaseTarget.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterAttackState attack = new ShooterAttackState(this);

        attack.AddTransition(TransitionID.OutRange, StateID.ChasingTarget);
        attack.AddTransition(TransitionID.Unloaded, StateID.Reload);
        attack.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterReloadState reload = new ShooterReloadState(this);

        reload.AddTransition(TransitionID.Loaded, StateID.ChasingTarget);
        reload.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterHurtState hurt = new ShooterHurtState(this);

        hurt.AddTransition(TransitionID.StopHurt, StateID.ChasingTarget);
        hurt.AddTransition(TransitionID.Dying, StateID.Dead);

        ShooterDeadState dead = new ShooterDeadState(this);

        dead.AddTransition(TransitionID.Healed, StateID.ChasingTarget);

        fsm = new FSM();
        fsm.AddState(idle);
        fsm.AddState(roam);
        fsm.AddState(chaseTarget);
        fsm.AddState(attack);
        fsm.AddState(reload);
        fsm.AddState(hurt);
        fsm.AddState(dead);
    }