public static NearClipPoints GetCameraNearClipPoints(Vector3 cameraPos) { NearClipPoints points = new NearClipPoints(); Camera cam = Camera.main; if (cam == null) { return points; } float distance = cam.nearClipPlane; float halfFOV = cam.fov * 0.5f * Mathf.Deg2Rad; float height = Mathf.Tan(halfFOV) * distance; float width = height * cam.aspect; points.LowerRight = (cameraPos + cam.transform.right * width) - (cam.transform.up * height) + (cam.transform.forward * distance); points.LowerLeft = (cameraPos - cam.transform.right * width) - (cam.transform.up * height) + (cam.transform.forward * distance); points.UpperRight = (cameraPos + cam.transform.right * width) + (cam.transform.up * height) + (cam.transform.forward * distance); points.UpperLeft = (cameraPos - cam.transform.right * width) + (cam.transform.up * height) + (cam.transform.forward * distance); return points; }
public static NearClipPoints GetCameraNearClipPoints(Vector3 cameraPos) { NearClipPoints points = new NearClipPoints(); Camera cam = Camera.main; if (cam == null) { return(points); } float distance = cam.nearClipPlane; float halfFOV = cam.fov * 0.5f * Mathf.Deg2Rad; float height = Mathf.Tan(halfFOV) * distance; float width = height * cam.aspect; points.LowerRight = (cameraPos + cam.transform.right * width) - (cam.transform.up * height) + (cam.transform.forward * distance); points.LowerLeft = (cameraPos - cam.transform.right * width) - (cam.transform.up * height) + (cam.transform.forward * distance); points.UpperRight = (cameraPos + cam.transform.right * width) + (cam.transform.up * height) + (cam.transform.forward * distance); points.UpperLeft = (cameraPos - cam.transform.right * width) + (cam.transform.up * height) + (cam.transform.forward * distance); return(points); }