一,通過編輯器中數值計算。
如圖,相機為Orthographic模式,其camera size為5.57,是什么含義呢,經過測量,發現視圖中視截體的高度是5.57x2。
那么視截體的寬度怎么決定呢?
做下面試驗,前面屏幕尺寸選的是Web(600x900),所以 視截體寬度=視截體長度/900*600=7.426。經測量,這個值是對的。
假如我們將屏幕規格選為5:4,如圖:
然后再回到Scene視圖下,可以看到視截體的形狀發生了變化:
不過可以看出視截體的高度並沒有發生變化,仍然是5.57x2。按照前面的算法,視截體寬度=視截體高度/4*5=13.925。經測量,這個值是對的。
另外,如果調整Viewport Rect的W和H,也會影響視截體形狀,但只要H不取0,視截體高度就永遠等於2xsize值(5.57x2),所以有意義的只是W和H的比值。
於是可以總結:
在Orthographic模式下,視截體尺寸可如下計算:
視截體高度= camera.size
視截體寬度= 視截體高度*(screenWidth/screenHeight)*(camera.viewportRect.W/camera.viewportRect.H)
二,在腳本中計算。
public GameObject mainCamera;
void Start () {
float frustumHeight = mainCamera.GetComponent<Camera> ().orthographicSize*2;
float frustumWidth = frustumHeight*mainCamera.GetComponent<Camera> ().aspect;
Debug.Log (frustumWidth);
Debug.Log (frustumHeight);
}
在腳本中直接用mainCamera.GetComponent<Camera> ().aspect即可,里面已經包含了screen長寬比和viewportRect長寬比的影響。