AddTransition() public method

public AddTransition ( Transition, _trans ) : void
_trans Transition,
return void
Example #1
0
    // ------------------------------------------------------------------ 
    // Desc: 
    // ------------------------------------------------------------------ 

    void InitFSM () {

        FSM.Condition cond_isPlayerInAttackRange = new Condition_isPlayerInAttackRange(this,60.0f,1.5f);
        FSM.Condition cond_isAttacking = new Condition_isAttacking(this);
        FSM.Condition cond_noHP = new Condition_noHP(this.zombieInfo);

        // ======================================================== 
        // setup states
        // ======================================================== 

        // seekPlayers
        FSM.State state_seekPlayers = new FSM.State( "SeekPlayers", 
                                                     new Action_PlayAnim(this.anim,"walk"), 
                                                     new Action_MoveToNearestAlivedPlayer(0.01f,this), 
                                                     new Action_StopMoving(this) );
        // attack
        FSM.State state_attack = new FSM.State( "Attack", 
                                                new Action_Attack(this), 
                                                null,
                                                null );
        // dead
        FSM.State state_dead = new FSM.State( "Dead",
                                              new Action_ActOnDead(this), 
                                              null,
                                              null );

        // ======================================================== 
        // setup transitions
        // ======================================================== 

        // seek to ...
        state_seekPlayers.AddTransition( new FSM.Transition( state_dead,
                                                             cond_noHP,
                                                             null ) );
        state_seekPlayers.AddTransition( new FSM.Transition( state_attack,
                                                             cond_isPlayerInAttackRange,
                                                             null ) );
        // attack to ...
        state_attack.AddTransition( new FSM.Transition( state_dead,
                                                        cond_noHP,
                                                        null ) );
        state_attack.AddTransition( new FSM.Transition( state_seekPlayers,
                                                        new FSM.Condition_not(cond_isAttacking),
                                                        null ) );

        //
        fsm.init(state_seekPlayers);
    }
Example #2
0
    // ------------------------------------------------------------------ 
    // Desc: 
    // ------------------------------------------------------------------ 

    void InitFSM () {

        // ======================================================== 
        // setup states
        // ======================================================== 

        // idle
        FSM.State state_idle = new FSM.State( "Idle", 
                                              new Action_OnIdle(this), 
                                              new Action_RandomAnim(4.0f, 4.0f, this.anim, new string[]{"idle1","idle2"} ),
                                              null );
        // seekPlayers
        FSM.State state_seekPlayers = new FSM.State( "SeekPlayers", 
                                                     new Action_PlayAnim(this.anim,"moveForward"), 
                                                     new Action_MoveToNearestAlivedPlayer(0.5f,this), 
                                                     new Action_StopMoving(this) );
        // attack
        FSM.State state_attack = new FSM.State( "Attack", 
                                                new Action_Attack(this.anim), 
                                                null,
                                                null );
        // get hit
        FSM.State state_onStun = new FSM.State( "OnStun", 
                                               new Action_ActOnStun(this), 
                                               null,
                                               null );
        // on dead
        FSM.State state_onDead = new FSM.State( "OnDead",
                                                new Action_ActOnDead(this), 
                                                null, // TODO: dead clean up
                                                null );
        // dead
        FSM.State state_dead = new FSM.State( "Dead",
                                              new Action_CleanDeadBody(this.gameObject), 
                                              null,
                                              null );

        // ======================================================== 
        // condition 
        // ======================================================== 

        FSM.Condition cond_isPlayerInAttackRange = new Condition_isPlayerInAttackRange(this,30.0f,this.attackDistance);
        FSM.Condition cond_isAttacking = new Condition_isAttacking(this);
        FSM.Condition cond_isOnStun = new Condition_isOnStun(this);
        FSM.Condition cond_noHP = new Condition_noHP(this.zombieInfo);
        // TODO: FSM.Condition cond_isStunning = new Condition_isStunning(this);

        // ======================================================== 
        // setup transitions
        // ======================================================== 

        // idle to ...
        state_idle.AddTransition( new FSM.Transition( state_onDead,
                                                      cond_noHP,
                                                      null ) );
        state_idle.AddTransition( new FSM.Transition( state_onStun,
                                                      cond_isOnStun,
                                                      null ) );
        state_idle.AddTransition( new FSM.Transition( state_seekPlayers, 
                                                      new Condition_playerInRange( this.transform, 20.0f ), 
                                                      null ) );

        // seekPlayers to ...
        state_seekPlayers.AddTransition( new FSM.Transition( state_onDead,
                                                             cond_noHP,
                                                             null ) );
        state_seekPlayers.AddTransition( new FSM.Transition( state_onStun,
                                                             cond_isOnStun,
                                                             null ) );
        state_seekPlayers.AddTransition( new FSM.Transition( state_attack,
                                                             cond_isPlayerInAttackRange,
                                                             null ) );
        state_seekPlayers.AddTransition( new FSM.Transition( state_idle, 
                                                             new FSM.Condition_not( new Condition_playerInRange( this.transform, 40.0f ) ) , 
                                                             null ) );
        // attack to ...
        state_attack.AddTransition( new FSM.Transition( state_onDead,
                                                        cond_noHP,
                                                        null ) );
        state_attack.AddTransition( new FSM.Transition( state_onStun,
                                                        cond_isOnStun,
                                                        null ) );
        state_attack.AddTransition( new FSM.Transition ( state_idle, 
                                                         new FSM.Condition_not(cond_isAttacking),
                                                         null ) );
        // on hit to ...
        state_onStun.AddTransition( new FSM.Transition( state_onDead,
                                                       cond_noHP,
                                                       null ) );
        state_onStun.AddTransition( new FSM.Transition ( state_idle, 
                                                        new FSM.Condition_not(new Condition_isStunning(this) ),
                                                        null ) );
        state_onStun.AddTransition( new FSM.Transition ( state_onStun, 
                                                         cond_isOnStun,
                                                         null ) );

        // on dead to ...
        state_onDead.AddTransition( new FSM.Transition( state_dead,
                                                        new FSM.Condition_waitForSeconds(this.deadBodyKeepTime),
                                                        null ) );

        // init fsm
        fsm.init(state_idle);
    }