我怎样才能计算我的相机在世界空间的可见区域,并考虑到变焦?

我试图从Unity中的正交相机中获取边界,并考虑当前的正交大小(缩放)。

我以为我可以使用cameraToWorldMatrix将相机像素矩形转换为世界坐标。

var m = camera.cameraToWorldMatrix; var bL = m.MultiplyPoint(new Vector3(camera.pixelRect.xMin, camera.pixelRect.yMin)); var uL = m.MultiplyPoint(new Vector3(camera.pixelRect.xMin, camera.pixelRect.yMax)); var uR = m.MultiplyPoint(new Vector3(camera.pixelRect.xMax, camera.pixelRect.yMax)); var rect = new Rect(uL.x, uL.y, Math.Abs(uR.x - uL.x), Math.Abs(bL.y - uL.y)); 

但是,这不考虑正字大小(缩放)。

cameraToWorldMatrix与相机的projectionMatrix属性相乘并不能给我正确的结果。

有没有一个明智的办法可以解决这个问题?

原来,答案比我原先想象的更简单。

  // Calculate orthographic camera bounds float height = 2f * camera.orthographicSize; float width = height * camera.aspect;