// Finding with tags public void UpdateTarget(GameObject[] monsters, Vector3 positionSelf) { GameObject nearestTarget = null; float shortestDistance = Mathf.Infinity; foreach (GameObject monster in monsters) { float dist = Vector3.Distance(positionSelf, monster.transform.position); if (dist < shortestDistance) { nearestTarget = monster; shortestDistance = dist; } } if (nearestTarget != null && shortestDistance <= range) { tower.UpdateTarget(nearestTarget.transform); } else { tower.UpdateTarget(null); } }