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();
}