//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); }
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); } }
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); } }