public T GetNearestObjInsideFieldOfView <T>() where T : MonoBehaviour { List <T> allObjectInrange = new List <T>(); List <T> allObjectInView = new List <T>(); //Find all Object in the Radius range AiFind.Finds <T>(eye.position, viewDistance, ref allObjectInrange); //find all Object in View foreach (T t in allObjectInrange) { if (Vector3.Angle(eye.forward, t.transform.position - eye.position) < viewAngle / 2.0f) { allObjectInView.Add(t); } } float miniDis = float.MaxValue; T nearestObj = null; foreach (T obj in allObjectInView) { float dist = (obj.transform.position - eye.position).magnitude; if (dist < miniDis) { miniDis = dist; nearestObj = obj; } } return(nearestObj); }
public Collider GetNearestColliderInsideFieldOfView(LayerMask layerMask) { return(AiFind.FindNearestColliderOverlapSphere(eye.position, viewDistance, layerMask)); }