使用斜視錐體
默認(rèn)情況下,視錐體圍繞攝像機(jī)的中心線對稱安放,但這并不是必須的。視錐體可設(shè)置為“傾斜的”,即一側(cè)與中心線的角度小于對側(cè)與中心線的角度。這種做法使得圖像一側(cè)的透視看起來更加緊湊,給人的印象是觀察者非??拷谠撨吘壧幙梢姷膶ο?。此功能的一個用法示例是賽車游戲;如果視錐體在其底部邊緣變平,則從觀察者的角度看起來會更貼近道路,凸顯了速度感。

雖然 Camera 組件沒有專門用于設(shè)置視錐體傾斜度的功能,但可以通過啟用攝像機(jī)的?Physical Camera?屬性并應(yīng)用 Lens Shift 設(shè)置,或通過添加腳本來更改攝像機(jī)的投影矩陣,從而實(shí)現(xiàn)這樣的功能。
使用 Lens Shift 設(shè)置視錐體傾斜度
啟用攝像機(jī)的?Physical Camera?屬性可顯示?Lens Shift?選項(xiàng)??梢允褂眠@些選項(xiàng)來沿著 X 和 Y 軸偏移攝像機(jī)的焦點(diǎn)中心,從而最大限度減少渲染圖像的失真。
移動鏡頭可以減小與移位方向相反側(cè)的視錐體角度。例如,向上移動鏡頭時,視錐體底部與攝像機(jī)中心線之間的角度會變小。

有關(guān) Physical Camera 選項(xiàng)的更多信息,請參閱關(guān)于物理攝像機(jī)的文檔。
有關(guān)設(shè)置各個 Physical Camera 屬性的更多信息,請參閱?Camera 組件參考。
使用腳本設(shè)置視錐體傾斜度
以下腳本示例顯示了如何通過更改攝像機(jī)的投影矩陣來快速實(shí)現(xiàn)斜視錐體。請注意,僅當(dāng)游戲運(yùn)行播放模式時才能看到腳本的效果。
using UnityEngine;?
using System.Collections;?
public class ExampleScript : MonoBehaviour {
? ?
void SetObliqueness(float horizObl, float vertObl) {
? ? ? ?
Matrix4x4 mat ?= Camera.main.projectionMatrix;
? ? ? ?
mat[0, 2] = horizObl;
? ? ? ?
mat[1, 2] = vertObl;
? ? ? ?
Camera.main.projectionMatrix = mat;
}
}
C# 腳本示例
function SetObliqueness(horizObl: float, vertObl: float) {
var mat: Matrix4x4 = camera.projectionMatrix;
? ?
mat[0, 2] = horizObl;
? ?
mat[1, 2] = vertObl;
? ?
camera.projectionMatrix = mat;
}
JS 腳本示例
幸運(yùn)的是,沒有必要了解投影矩陣如何使用它。horizObl 和 vertObl 值分別設(shè)置水平和垂直傾斜量。值為零表示無傾斜。正值使視錐體向右或向上移動,從而使左邊或底邊變平。負(fù)值使視錐體向左或向下移動,從而使視錐體的右邊或頂邊變平。如果將此腳本添加到攝像機(jī)并在游戲運(yùn)行時將游戲切換到 Scene 視圖,則可以直接看到效果;在檢視面板中改變 horizObl 和 vertObl 的值時,攝像機(jī)視錐體的線框會發(fā)生變化。任一變量中的值為 1 或 –1 表示視錐體的一側(cè)與中心線完全齊平。此范圍之外的值也是允許使用的,但通常沒有必要。