Пример #1
0
    /*  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
        }
    }