protected virtual void BuildFSM() { IdleState idle = new IdleState(); idle.AddTransitionState(FSMStateID.Shoot, FSMTransitions.SawPlayer); idle.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); ShootState shoot = new ShootState(spawnerScript); shoot.AddTransitionState(FSMStateID.Idle, FSMTransitions.PlayerOutOfRange); shoot.AddTransitionState(FSMStateID.Dead, FSMTransitions.OutOfHealth); DeadState dead = new DeadState(); AddFSMState(idle); AddFSMState(shoot); AddFSMState(dead); }
void FSMInit() { _fsm = new FSM <States>(); var move = new MoveState <States>(SetupPathfinding, Run, _model, _leaderState, goal, criticalHealthAmount, team, distToGoal, _root); var attack = new AttackState <States>(_model, _leaderState, shootCD, team, criticalHealthAmount, _root); var flee = new FleeState <States>(SetupPathfinding, Run, _model, _leaderState, secureZone, secureHealthAmount, distToSecureZone, _root); var idle = new IdleState <States>(_model, _leaderState, goal, distToGoal, criticalHealthAmount, team, _root); move.AddTransitionState(States.Idle, idle); move.AddTransitionState(States.Attack, attack); move.AddTransitionState(States.Flee, flee); attack.AddTransitionState(States.Move, move); attack.AddTransitionState(States.Flee, flee); flee.AddTransitionState(States.Move, move); idle.AddTransitionState(States.Move, move); idle.AddTransitionState(States.Flee, flee); idle.AddTransitionState(States.Attack, attack); _fsm.SetInit(move); }
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); }