Скопируйте ошибку из консоли и покажите в коде,как вы применяете метод FindClosestEnemy.Чтобы искал постоянно ближайший,нужно в Update искать.И по хорошим делам переписать,чтобы в Update не искать обьекты по тэгу.
Например так
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour
{
GameObject[] gos;
GameObject closest;
void Start()
{
gos = GameObject.FindGameObjectsWithTag("Enemy");
}
GameObject FindClosestEnemy()
{
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos)
{
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance)
{
closest = go;
distance = curDistance;
}
}
return closest;
}
void Update()
{
print(FindClosestEnemy().name);
}
}
Мой пример подходит,если у вас количество элеметнов массива gos неизменно.Вывод print в каждом фрейме существенно садит fps.Будте к этому готовы.
P.S. Ну и в добавок я предпочитаю использовать вместо
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
в таком виде
float curDistance=Vector3.Distance(go.transform.position,position)