Beispiel #1
0
        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);
        }
Beispiel #2
0
 public Collider GetNearestColliderInsideFieldOfView(LayerMask layerMask)
 {
     return(AiFind.FindNearestColliderOverlapSphere(eye.position, viewDistance, layerMask));
 }