You can perform Frustum and AABB collision detection using something similar to the fallowing code ...

public object[] GetObjects(Vector3 position, float distance, float fov, Vector3 direction)
        {
            var results = new List<GameObject>();

            // search all game objects
            var objects = UnityEngine.Object.FindObjectsOfType(typeof(GameObject));

            if (this.camera == null)
            {
                this.cameraGameObject = new GameObject();
                this.camera = this.cameraGameObject.AddComponent<Camera>();
            }

            this.cameraGameObject.transform.position = position;
            this.cameraGameObject.transform.forward = direction;
            this.camera.fov = fov;
            this.camera.far = distance;

            var planes = GeometryUtility.CalculateFrustumPlanes(this.camera);

            foreach (GameObject obj in objects)
            {
                if (obj == this.cameraGameObject)
                {
                    continue;
                }

                // if no collider just ignore
                if (obj.collider == null)
                {
                    continue;
                }

                if (GeometryUtility.TestPlanesAABB(planes, obj.collider.bounds))
                {
                    results.Add(obj);
                }
            }

            return results.ToArray();
        }


Add comment



biuquote
  • Comment
  • Preview
Loading






Created by: X

Just another personal website in this crazy online world

Name of author Dean Lunz (aka Created by: X)
Computer programming nerd, and tech geek.
About Me -- Resume