//lo mismo pero ahora solo mira entre los que esten en el ultimo waypoint
    //Con mas waypoints deberia ir mejor
    //Hace where y solo usa el maxMy para coger el mayor
    protected GameObject Mejor5Punto1()
    {
        GameObject nearestEnemy = null;
        int        maxWaypoint  = enemiesNearTower.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        nearestEnemy = OrderAux.MaxByGameObject(enemiesNearTower.Where(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex == maxWaypoint), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude);
        return(nearestEnemy);
    }
    /*Ademas ahora usa int para filtrar a ver si es mas rapido que con floats, la pega es que deja mas numeros en la lista*/
    protected GameObject ChooseNearestEnemyNew3()
    {
        GameObject nearestEnemy = null;
        int        minX         = (int)(transform.position.x - range);
        int        minZ         = (int)(transform.position.z - range);
        int        maxX         = (int)(transform.position.x + range);
        int        maxZ         = (int)(transform.position.z + range);

        nearestEnemy = OrderAux.MaxByGameObject(enemiesSpawned.Where(x => x.transform.position.x > minX && x.transform.position.z > minZ &&
                                                                     x.transform.position.x < maxX && x.transform.position.z < maxZ), x => (transform.position - x.transform.position).sqrMagnitude);
        return(nearestEnemy);
    }
    //TriggerCollider por cada torre en la que se guardan los que entran y los que van saliendo
    //Al atacar buscar en esa lista el mas cercano al nexo
    protected GameObject Mejor4()
    {
        GameObject nearestEnemy = null;
        int        maxWaypoint  = enemiesNearTower.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        nearestEnemy = OrderAux.MaxByGameObject(enemiesNearTower, x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude);
        if (nearestEnemy)
        {
            return(nearestEnemy.gameObject);
        }
        else
        {
            return(null);
        }
    }
    //Lo mismo pero sin hacer el cuadrado antes para sacar distancia de solo los que estan dentro
    protected GameObject ChooseNearestEnemyNew6()
    {
        GameObject nearestEnemy = null;
        float      rangePow     = range * range;
        int        maxWaypoint  = enemiesNearTower.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        nearestEnemy = OrderAux.MaxByGameObject(enemiesSpawned.Where(x => maxWaypoint == x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex&& (transform.position - x.transform.position).sqrMagnitude < rangePow), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude);
        if (nearestEnemy)
        {
            return(nearestEnemy.gameObject);
        }
        else
        {
            return(null);
        }
    }
    /*Ahora coge los que vayan por el waypoint mas lejano y saca la distancia con el siguiente waypoint */
    protected GameObject Mejor1()
    {
        GameObject nearestEnemy = null;
        int        minX         = (int)(transform.position.x - range);
        int        minZ         = (int)(transform.position.z - range);
        int        maxX         = (int)(transform.position.x + range);
        int        maxZ         = (int)(transform.position.z + range);
        float      rangePow     = range * range;
        int        maxWaypoint  = enemiesNearTower.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        nearestEnemy = OrderAux.MaxByGameObject(enemiesSpawned.Where(x => maxWaypoint == x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex&& x.transform.position.x > minX && x.transform.position.z > minZ &&
                                                                     x.transform.position.x < maxX && x.transform.position.z < maxZ && (transform.position - x.transform.position).sqrMagnitude < rangePow), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude);
        if (nearestEnemy)
        {
            return(nearestEnemy.gameObject);
        }
        else
        {
            return(null);
        }
    }