public static Enemy.EnemyController GetClosestEnemyFromList(List <Enemy.EnemyController> targets, Transform reference, out float sqrDistance) { Enemy.EnemyController closest = null; sqrDistance = float.MaxValue; foreach (var target in targets) { var dist = (target.transform.position - reference.transform.position).sqrMagnitude; if (dist < sqrDistance) { closest = target; sqrDistance = dist; } } return(closest); }
public static Enemy.EnemyController GetFarthestEnemyFromList(List <Enemy.EnemyController> targets, Transform reference, out float sqrDistance, float acuracy = 0.001f) { Enemy.EnemyController closest = null; sqrDistance = -1; foreach (var target in targets) { var dist = (target.transform.position - reference.transform.position).sqrMagnitude; if (dist > sqrDistance) { closest = target; sqrDistance = dist; } } sqrDistance = EstimateSquareRoot(sqrDistance, acuracy); return(closest); }