예제 #1
0
    //Coge los que estan en rango, saca el maximo wayPoint por el que van, selecciona solo los que van a ese y elige el que este mas cerca
    protected GameObject ChooseFirst()
    {
        Collider[] collidersInRange = Physics.OverlapSphere(transform.position, range, layerMask);
        if (collidersInRange.Length == 0)
        {
            return(null);
        }
        int maxWaypoint = collidersInRange.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        return(OrderAux.MinElement(collidersInRange.Where(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex == maxWaypoint), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude).gameObject);
    }
예제 #2
0
    protected GameObject ChooseNearestEnemy()
    {
        Collider hitCollider = OrderAux.MinElement(Physics.OverlapSphere(transform.position, range, layerMask), x => (transform.position - x.transform.position).sqrMagnitude);

        if (hitCollider)
        {
            return(hitCollider.gameObject);
        }
        else
        {
            return(null);
        }
    }
    protected GameObject BestColliderChooseNearestEnemy(float range, int layer)
    {
        int      layerMask   = 1 << layer;
        Collider hitCollider = OrderAux.MinElement(Physics.OverlapSphere(transform.position, range, layerMask).Where(x => x.CompareTag("enemy")), x => (transform.position - x.transform.position).sqrMagnitude);

        if (hitCollider)
        {
            return(hitCollider.gameObject);
        }
        else
        {
            return(null);
        }
    }
예제 #4
0
    protected GameObject ChooseWeakestEnemy()
    {
        IEnumerable <Collider> collidersInRange = Physics.OverlapSphere(transform.position, range, layerMask);

        if (collidersInRange.Count() == 0)
        {
            return(null);
        }
        float maxHpEnemy = collidersInRange.Min(x => x.gameObject.GetComponent <EnemyFather>().maxHp);

        collidersInRange = collidersInRange.Where(x => x.gameObject.GetComponent <EnemyFather>().maxHp == maxHpEnemy);
        int maxWaypoint = collidersInRange.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);

        return(OrderAux.MinElement(collidersInRange.Where(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex == maxWaypoint), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude).gameObject);
    }
    protected GameObject Mejor2()
    {
        int      layerMask    = 1 << layer;
        int      maxWaypoint  = enemiesNearTower.Max(x => x.gameObject.GetComponent <EnemyFather>().nextWayPointIndex);
        Collider nearestEnemy = OrderAux.MinElement(Physics.OverlapSphere(transform.position, range, layerMask).Where(x => x.CompareTag("enemy")), x => (Waypoints.waypoints[maxWaypoint] - x.transform.position).sqrMagnitude);

        if (nearestEnemy)
        {
            return(nearestEnemy.gameObject);
        }
        else
        {
            return(null);
        }
    }