protected override void BuildFSM() { PatrolState patrol = new PatrolState(PatrolPoints, navAgent, agroDistance); patrol.AddTransitionState(FSMStateID.Shoot, FSMTransitions.SawPlayer); patrol.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); ShootState shoot = new ShootState(chargeDistance, spawnerScript); shoot.AddTransitionState(FSMStateID.Patrol, FSMTransitions.PlayerOutOfRange); shoot.AddTransitionState(FSMStateID.Chase, FSMTransitions.PlayerTooClose); shoot.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); ChaseState chase = new ChaseState(navAgent, chargeDistance); chase.AddTransitionState(FSMStateID.Shoot, FSMTransitions.PlayerOutOfRange); chase.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); DeadState dead = new DeadState(); AddFSMState(patrol); AddFSMState(shoot); AddFSMState(chase); AddFSMState(dead); }
protected override void BuildFSM() { PassiveState passive = new PassiveState(activateRaidus); passive.AddTransitionState(FSMStateID.Chase, FSMTransitions.Awoken); passive.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); IdleState idle = new IdleState(); idle.AddTransitionState(FSMStateID.Chase, FSMTransitions.SawPlayer); idle.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); ChaseState chase = new ChaseState(navAgent, agroDistance); chase.AddTransitionState(FSMStateID.Idle, FSMTransitions.PlayerOutOfRange); chase.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); DeadState dead = new DeadState(); AddFSMState(passive); AddFSMState(idle); AddFSMState(chase); AddFSMState(dead); }