public GameObject FindClosest(string tag)
{
var nearestDistanceSqr = Mathf.Infinity;
var taggedGameObjects = GameObject.FindGameObjectsWithTag(tag);
GameObject nearestObj = null;
// loop through each tagged object, remembering nearest one found
foreach (GameObject obj in taggedGameObjects)
{
var objectPos = obj.transform.position;
var distanceSqr = (objectPos - transform.position).sqrMagnitude;
if (distanceSqr < nearestDistanceSqr) {
nearestObj = obj;
nearestDistanceSqr = distanceSqr;
}
}
return nearestObj;
}