protected void MakeFSM()
    {
        mFSMSystem = new SoldierFSMSytem();

        SoldierIdleState idleState = new SoldierIdleState(mFSMSystem, this);

        idleState.AddTransition(SoldierTransition.SeeEnemy, SoldierStateID.Chase);

        SoldierChaseState chaseState = new SoldierChaseState(mFSMSystem, this);

        chaseState.AddTransition(SoldierTransition.NoEnemy, SoldierStateID.Idle);
        chaseState.AddTransition(SoldierTransition.CanAttack, SoldierStateID.Attack);

        SoldierAttackState attackState = new SoldierAttackState(mFSMSystem, this);

        attackState.AddTransition(SoldierTransition.NoEnemy, SoldierStateID.Idle);
        attackState.AddTransition(SoldierTransition.SeeEnemy, SoldierStateID.Chase);

        mFSMSystem.AddState(idleState, chaseState, attackState);
    }
示例#2
0
 public ISoldierState(SoldierFSMSytem fsm, ICharacter character)
 {
     mFSM       = fsm;
     mCharacter = character;
 }
 public SoldierChaseState(SoldierFSMSytem fsm, ICharacter c) : base(fsm, c)
 {
     mStateID = SoldierStateID.Chase;
 }
 public SoldierAttackState(SoldierFSMSytem fsm, ICharacter c) : base(fsm, c)
 {
     mStateID     = SoldierStateID.Attack;
     mAttackTimer = mAttackTime;
 }