CinemachineVirtualCamera

CinemachineVirtualCamera

來源於:Unity相機管理:虛擬相機

虛擬相機看起來就像是一個普通的組件,我們可以通過編寫腳本,在遊戲進行時修改它的各個屬性,但是在概念上,我們最好把它當做一種相機行爲的配置文件。在遊戲開發中,我們的相機有幾種行爲,就爲它製作幾個虛擬相機,比如爲角色移動準備一個第三人稱的虛擬相機,爲角色的舉槍瞄準準備一個第一人稱的虛擬相機,爲過場劇情準備幾個固定機位的虛擬相機和幾個滑軌虛擬相機。當我們需要改變相機的行爲時,直接切換虛擬相機就好了。本質上虛擬相機應該是相機行爲的配置文件,當切換虛擬相機的時候,其實就是在通過切換不同的配置文件來控制相機的行爲。既然它是配置文件,那麼當虛擬相機裏的屬性被設置完畢後,就應當儘量避免在遊戲中進行修改,如果你發現自己在遊戲中進行修改多個屬性的話,請考慮再製作一個虛擬相機,它並不會消耗多少的系統資源,而這樣做會更便於你管理你自己的相機行爲。

Status(虛擬相機的狀態)

  • 激活狀態Live,這表示Cinemachine Brain正在使用這個虛擬相機的屬性來控制相機。可通過點擊後面的Solo按鈕,使其立即處於激活狀態。

  • 待機狀態Standby:表示虛擬相機並未被Cinemachine Brain使用。但是虛擬相機自身還在運行當中,下面的Follow、Look At等計算不一定會停止,它的計算頻率或者說刷新頻率由下面的Standby Update決定。

  • 禁用狀態Disabled:表示虛擬相機被禁用,不在佔用系統資源。

Game Window Guides:遊戲窗口引導,打開後會在Game窗口顯示虛擬相機的一些提示信息,比如Dead Zone,Soft Zone區域等。

Save During Play:如果激活它,那麼在Play狀態下的對虛擬相機的修改則會被保存下來。

Priority:優先級,Cinemachine Brain會使用優先級較高的虛擬相機,在Timeline中使用虛擬相機時,這裏的優先級是沒有任何作用的。

Follow:虛擬相機會跟隨這裏的遊戲對象移動,具體的跟隨移動行爲設置在下面的Body裏。

Look At:虛擬相機會看向這裏的遊戲對象,具體的看向旋轉行爲設置在下面的Aim裏。

Standby Update:指的是當虛擬相機處於待機狀態時,這些Follow和Look At之類的計算要以什麼樣的頻率執行或刷新,Never表示永遠不執行或永遠不刷新,Always表示執行和刷新的頻率與激活的相機是一樣的。Round Robin是一種輪替的更新策略,大概可以理解爲每一幀選擇一個standBy相機進行更新。

Lens(鏡頭設置)

  • Vertical FOV:視野角度

  • Near Clip Plane:*裁剪*面,與相機距離小於這個數值的遊戲對象不會被渲染。

  • Far Clip Plane:遠裁剪*面,與相機距離大於這個數值的遊戲對象不會被渲染。

  • Dutch:荷蘭角,斜角鏡頭的角度。

Advanced(高級模式)

Mode Override:相機模式,有正交相機、透視相機和物理相機。在使用正交相機時,FOV視野角度會變成視窗尺寸Ortho Size,使用物理相機時,FOV視野角度會變成焦距Forcal Length,並增加傳感器大小Sensor Size等等。 修改該屬性同時也會修改Camera上的屬性,當這個虛擬相機不再被激活時,Camera上被修改後的屬性並不會變回去。

Transitions(虛擬相機切換時的屬性設置)

Blend Hint:相機切換的行爲具有怎樣的物理空間特徵。

  • None:對角度和位置做差值,也就是一條線性的切換。

  • Spherical Position:球形切換,如果Look At屬性有值的話,那麼就以它爲球心做一個球形的切換,也就是相機經過的路徑大致處於一個球面上。

  • Cylindrical Position:圓柱形切換,如果Look At屬性有值的話,那麼就以它爲中心,在水**面上做圓形切換,在垂直*面上做線性切換,相機劃過的路徑大致處於一個圓柱體的表面上。

  • Screen Space Aim When Target:當Look At的目標不一樣時,在屏幕空間之間做切換,這種切換在位置上使用世界座標系,表現出的是普通的線性切換。在角度上則會根據兩個相機所構成的屏幕空間的夾角間做切換。

Inherti Position:表示這個虛擬相機被激活時,不是讓相機移動到虛擬相機的位置,而是虛擬相機移動到相機的位置。

Body和Follow相關,Aim和Look At相關,Noise可爲相機添加抖動,Extensions可爲相機添加額外的功能,比如相機碰撞檢測等。

Body

Transposer

虛擬相機將在某個固定的偏移或距離上跟隨目標移動。這個固定偏移就是下面的Follow Offset。默認值是(0,0,-10),也就是說虛擬相機將在跟隨過程中儘量處於相對與跟隨目標身後10米的位置。爲什麼說盡量呢,因爲有阻尼係數Damping,可以理解爲相機移動的延遲。這裏的值越小,反應越靈敏。至於這裏的身後10米指的是Follow目標本地座標系還是世界座標系則由Binding Mode指定。

Binding Mode(虛擬相機和目標的綁定方式)

  • Lock To Target On Assign:表示虛擬相機會鎖定自己和目標之間的距離,鎖定發生在這個虛擬相機和Follow對象建立關係的時候,也就是On Assign的時候,此時虛擬相機會出現在目標本地座標系下由Follow Offset指定的偏移的位置。On Assign指的是什麼時候呢,在非Play模式下,只要Follow這裏有對象,就一直是On Assign狀態。在Play模式下,只有當虛擬相機被激活的那一瞬間或者Follow有對象的那一瞬間纔是On Assign狀態。

  • World Space:與上面類似,但是此時使用的是世界座標系

  • Lock To Target With World Up:虛擬相機繞目標的偏航軸旋轉。

  • Lock To Target No Roll:虛擬相機可以繞着目標的偏航軸和俯仰軸旋轉,但是不能繞這橫滾軸旋轉。

  • Lock To Target:虛擬相機此時可以繞着目標的三個軸旋轉。

  • Simple Follow With World Up:虛擬相機不會繞對象的任何一個軸旋轉,且儘量不會橫向移動。

繞垂直軸Y軸左右旋轉機頭被稱爲偏航Yaw,對應的垂直軸被稱爲偏航軸Yaw Axis,繞橫向軸X軸將機頭上下旋轉被稱爲俯仰Pitch,對應的橫向軸被稱爲Pitch Axis。繞縱向軸Z軸轉動被稱爲橫滾Roll,對應的縱向軸被稱爲Roll Axis。這裏說的旋轉都是繞目標旋轉,虛擬相機本身的Rotation不會改變。

Orbital Transposer

當選用該模式時,可在Scene視圖中看到一個紅色圓圈,它會限制相機在這個紅色圓環上移動。Follow Offset中的y表示這個紅色圓環相對於追蹤目標的高度,z表示紅色圓環的半徑,x表示虛擬相機在這個圓環的切線上的偏移。

Heading

Definition:

  • Target Forward:表示目標的前方

  • World Forward:世界座標系的前方

  • Position Delta:根據目標在上一幀的位移,來決定相機處於什麼位置。

  • Velocity:和上面幾乎一樣,不過它識別的是剛體的速度。

Bias:如果希望相機歸位時有其他位置選擇的話,可以設置偏移量。

Velocity Filter Strength:速度的過濾器,可通過設置其大小來過濾掉一些不規則的擾動,讓相機移動更*滑。(Definition設置爲Position Delta或Velocity時可用)

Recenter To TargetHeading

Enabled:勾選後讓相機自動回到Heading方向(由Heading的Definition屬性決定)的"後方",也就是虛擬相機的自動歸爲功能。

Wait Time:表示虛擬相機相關的輸入停止之後多久,虛擬相機開始自動歸位。

Recentering Time:表示虛擬相機要花多久的時間才能夠歸位。

X Axis(描述的是虛擬相機在這個圓環上的行爲)

Value:指的是虛擬相機在圓環上的位置。0是初始位置,如果把世界座標系Z軸正方向當做12點方向,X軸當做三點鐘方向。0就是表示6點鐘方向。這個值增大順時針轉動,減少是逆時針運動。

Value Range:表示虛擬相機在這個圓環上移動的範圍。默認是360°一整圈。

Warp:表示是否在最大值和最小值之間循環。

Speed:轉速,如果選擇Max Speed,故表示最大轉速,如果選擇Input Value Gain,則表示速度等於這裏的值乘以輸入的值。

Accel Time:指轉速從零到最大轉速之間的時間。

Decel Time:指轉速從最大轉速到零之間的時間。

Input Axis Value:指當前的輸入值。

Invert:反向操作,勾選後,比如現在鼠標向右移動時時順時針移動,取消勾選就是逆時針移動。

Framing Transposer

當我們的屏幕和Follow對象之間的關係相對固定的時候,就會採用Framing Transposer。所以它通常被用在2D遊戲以及正交相機當中,不過也可以用於透視相機和3D遊戲。比如我們右鍵 > Cinemachine > 2D Camera創建一個2D虛擬相機時,它其實就是一個使用了Framing Transposer的虛擬相機。Framing Transposer虛擬相機會和目標保持一個固定的距離。

Target Movement Only:如果勾選,那麼Damping設置只對目標位移起作用。

Camera Distance:虛擬相機與目標的距離。

Dead Zone Depth:沿着虛擬相機的Z軸方向,只要目標與其距離小於該值,虛擬相機就不需要調整自己軸上的座標值。

Unlimited Soft Zone:讓Soft Zone填滿整個屏幕。

Aim

雖然這裏寫着Look At和Aim,但其本質卻是控制虛擬相機自身的旋轉,並一度非要看着或者說瞄準這裏的遊戲對象。Look At和Aim所要做的工作是目標對象作爲參考來旋轉自身。

  • Same As Follow Target:虛擬相機的角度就會和目標的角度保持一致。

  • Do Nothing:什麼都不做。

  • Composer:標準的瞄準模式,可保證相機看向這個遊戲對象。如果勾選了Game Window Guides,則會在Game視圖出現提示界面。界面上的黃點就是要對準的目標。

  • Hard Look At:無論相機在哪兒,都必須盯着當前目標看。

Tracked Object Offs:在瞄準對象的位置的基礎上做一定量的偏移,從而改變瞄準對象的位置。

Lookahead Time:根據目標當前的移動速度推測出一個偏移量。它指的是Cinemachine會計算當前目標的速度,並預測出一段時間後目標的位置,然後添加一個偏移量。

Lookahead Smoothing:可以讓上面的預測算法更*滑。當目標運動情況變化筆記大時,可以通過調整這裏的數值,以消除鏡頭抖動,但是數據過大,會導致預測的延遲。

Lookahead Ingore Y:勾選後就不會預測目標垂直方向上的移動。

Screen 和 Screen Y:表示Dead zone的中心位置,(0.5,0.5)表示屏幕的正中央。

Dead Zone Width 和 Dead Zone Height:Dead Zone的寬和高,Dead Zone的區域由周邊的淡藍色直線圍出來,Dead Zone的作用是減小相機的敏感程度。只要當前的這個黃點還落在Dead Zone裏,相機就不做轉動。(Game Window Guides打開才能在Game視圖看到各個區域)

Soft Zone Width 和 Soft Zone Height:Soft Zone的寬和高,藍色區域表示Soft Zone,當黃點落入Soft Zone時,虛擬相機會通過轉動讓黃點回到Dead Zone裏。最外層的紅色區域是黃點絕對不會落到的區域。(Game Window Guides打開才能在Game視圖看到各個區域)

Bias X和Bias Y:表示Soft Zone的偏移量。Soft Zone永遠不會比Dead Zone 小。

Center On Active:勾選時,當前相機被啓用的時候,它就會把目標放在屏幕的正中央,否則就會把目標放在最*的Dead Zone的邊緣位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章