Example #1
0
    void Start()
    {
        //VARIABLES
        lookB         = GetComponent <LookAroundBehaviour>();
        patrolB       = GetComponent <PatrolBehaviour>();
        chaseB        = GetComponent <ChaseBehaviour>();
        atkB          = GetComponent <AttackBehaviour>();
        coneVision    = GetComponent <ConeVision>();
        fsmCurrentTxt = fsmCurrentTxt.GetComponent <TextMeshProUGUI>();
        velocity      = GetComponent <Velocity>();
        health        = GetComponent <HealthBar>();

        //STATES
        FSMState Start        = new FSMState();
        FSMState lookAround   = new FSMState();
        FSMState patrol       = new FSMState();
        FSMState lastPosition = new FSMState();
        FSMState chase        = new FSMState();
        FSMState attack       = new FSMState();


        //ACTIONS
        Start.enterActions.Add(StartAction);

        lookAround.enterActions.Add(LookAround);
        lookAround.exitActions.Add(lookB.StopLooking);

        patrol.enterActions.Add(Patrol);
        patrol.exitActions.Add(patrolB.StopPatrol);

        chase.enterActions.Add(Chase);
        chase.exitActions.Add(chaseB.StopAtLastKnowPosition);

        lastPosition.enterActions.Add(LastPosition);

        attack.enterActions.Add(chaseB.StopNow);
        attack.enterActions.Add(Attack);
        attack.exitActions.Add(atkB.StopAttacking);

        //TRANSITIONS
        FSMTransition t0 = new FSMTransition(AlwaysTrue);
        FSMTransition t1 = new FSMTransition(PlayerHidden);
        FSMTransition t2 = new FSMTransition(PlayerDetected);
        FSMTransition t3 = new FSMTransition(PlayerNotDetected);
        FSMTransition t4 = new FSMTransition(PlayerInAttackRange);
        FSMTransition t5 = new FSMTransition(PlayerNotInAttackRange);
        FSMTransition t6 = new FSMTransition(PatrolingFinished);
        FSMTransition t7 = new FSMTransition(NotMoving);
        FSMTransition t8 = new FSMTransition(PlayerNotHidden);

        //LINK STATE - TRANSITION
        Start.AddTransition(t0, patrol);

        lookAround.AddTransition(t1, patrol);
        lookAround.AddTransition(t8, chase);
        lookAround.AddTransition(t2, chase);

        patrol.AddTransition(t2, chase);
        patrol.AddTransition(t6, lookAround);

        chase.AddTransition(t3, lastPosition);
        chase.AddTransition(t4, attack);

        lastPosition.AddTransition(t7, lookAround);
        lastPosition.AddTransition(t2, chase);

        attack.AddTransition(t5, chase);

        //INITIAL STATE
        fsm = new FSM(Start);
        StartCoroutine(Run());
    }
Example #2
0
 private void Start()
 {
     coneVision = GetComponent <ConeVision>();
 }