public void Pursue() { // toggle value pursue = !pursue; if (pursue) { // store current state for later use lastState = currentState; if (playerDistance < 12) { GetComponent <NavMeshAgent>().SetDestination(player.transform.position); } else { //PickNextNavPoint(); ChangeState(lastState.GetType()); } // change state to Pursue ChangeState <PursueState>(); } else { // restore stored state from before ChangeState(lastState.GetType()); } }
public void Angry() { // toggle angry value angry = !angry; if (angry) { // store current state for later use lastState = currentState; GetComponent <NavMeshAgent>().SetDestination(alarms[alarmsIndex].transform.position); // change state to Angry ChangeState <AngryState>(); } else { // restore stored state from earlier ChangeState(lastState.GetType()); } }
public void Pause() { // toggle paused value paused = !paused; if (paused) { // store current state for use when unpausing lastState = currentState; // change state to Pause ChangeState <PauseState>(); GetComponent <NavMeshAgent>().isStopped = true; } else { // restore stored state when pausing earlier ChangeState(lastState.GetType()); GetComponent <NavMeshAgent>().isStopped = false; } }