An overview of Finite State Machines
To create the AI for an NPC object, in addition to the line of sight code that we already have, we need to use Finite State Machines (FSMs). An FSM is not a thing or feature of Unity, nor is it a tangible aspect of the C# language. Rather, an FSM is a concept, framework, or idea that we can apply in code to achieve specific AI behaviors. It comes from a specific way of thinking about intelligent characters. Specifically, we can summarize the NPC for our level as existing within one of three possible states at any one time. These are patrol (when the enemy is wandering around), chase (when the enemy is running after the player), and attack (when the enemy has reached the player and is attacking). Each of these modes is a State and requires a unique and specific behavior and the enemy can be in only one of these three states at any one time.
The enemy cannot, for example, be patrolling and chasing simultaneously or patrolling and attacking, because this...