/* Toutes les méthodes de cette section gère le changement d'état. * La méthode updateState() permet de décide l'état que doit prendre le tank. La méthode changeState() effectuer les actions nécessaires * au changement de l'état. Les autres méthodes sont appelés par le UnityEvent exitState lorsque le tank entre/sort de l'état correspondant. */ private void updateState() { //Vérifier la position et l'existence du jouer if (valueScript.playerTank == null) //Il n'y a pas de joueur { changeState(EnemyAIValue.State.Search); //Mettre le tank en état Search } else if (valueScript.isPlayerInSight()) //Le joueur n'est pas bloqué par un mur { //Vérifier la distance au joueur if (valueScript.distanceToPlayer <= valueScript.fleeStartRange) //Le tank est sous range de fuite { changeState(EnemyAIValue.State.Flee); } else if (valueScript.distanceToPlayer <= valueScript.idleStartRange) //Le tank est sous la range d'immobilisation { changeState(EnemyAIValue.State.Idle); //Mettre le tank en état Idle } else //Le tank est avant la range d'immobilisation { changeState(EnemyAIValue.State.Move); //Mettre le tank en état Move } } else if (valueScript.hasPathfindingScript) //Le joueur est bloqué par un mur { changeState(EnemyAIValue.State.Rush); //Mettre le tank en état Rush } else //Le tank n'a pas de Pathfinding.cs script { changeState(EnemyAIValue.State.Idle); //Mettre le tank en état de Idle } }