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()); }
private void Start() { coneVision = GetComponent <ConeVision>(); }