MMD聯(lián)動Unity學(xué)習(xí)筆記 Vol.30 Cinemachine自由視角&鏡頭切換

前言 ????
????這期我們接著上期內(nèi)容,繼續(xù)跟著Shallot夏洛特大佬的視頻學(xué)習(xí)Cinemachine


Free Look(自由視角)

????這期我們介紹如何使用FreeLook相機(jī)跟隨角色,還會介紹根據(jù)我們的輸入來自定義自由觀察組件來獲得預(yù)期的效果。

????示例里我們有一輛可控制的飛船,當(dāng)前有一個虛擬相機(jī)鎖定了飛船,不斷的跟隨它,像是通常的游戲一樣,玩家控制飛船移動的同時可以控制相機(jī)角度,所以相機(jī)視野只有前方的一小部分區(qū)域,只能看到角色的一小部分。Cinemachine的自由觀察相機(jī)組件可以讓我們在跟隨角色的同時自由的旋轉(zhuǎn)相機(jī)視角。

????首先在這里創(chuàng)建它,

????我們將之前的相機(jī)隱藏,????

????將主角賦給這兩個屬性接口,

????運(yùn)行一下,當(dāng)我們移動鼠標(biāo),相機(jī)的會圍繞著飛船移動,當(dāng)然需要微調(diào)一下,

????看到我們的檢視器,把X軸的速度值調(diào)小一些可以獲得更順滑的效果。

????取消反向軸,我比較喜歡視角瞄準(zhǔn)我鼠標(biāo)的指向,

????自由觀察相機(jī)會在3個綁定點之間順滑的移動,就是這三個。Cinemachine可以讓我們在不同的情況下調(diào)整綁定點以及相關(guān)的參數(shù)來獲得不同的效果。

????在場景視窗中我們可以看到自由觀察相機(jī)組件會顯示出它的輔助線,我們修改一下參數(shù),可以看到輔助線也會跟著變化。

????如果想預(yù)覽相機(jī),我們可以修改X或者Y軸的數(shù)值,

????在這里我們可以使用目標(biāo)里面的設(shè)置來調(diào)整視角,

????同理,也可以拖拽導(dǎo)航線來調(diào)整。

????我還是在檢視器里來調(diào)整吧。如果修改Y軸數(shù)值同,可以看到虛擬相機(jī)會在縱向的這條弧線上移動,假如我們想修改相機(jī)在特定的綁定區(qū)域上的視野,

????比如相機(jī)如果陷入地面的情況,我們可以取消這個屬性,

????然后自定義Lens里面的參數(shù),

????最后再修改Spline Tension這個屬性值,我們就可以修正相互在每個點之間的移動,較低的值可以讓相機(jī)有一個直線的移動,較高的值可以獲得曲線移動。調(diào)整這些數(shù)值達(dá)到一個最佳的效果應(yīng)用到你的工程里。
????值得注意的是,我們可以把這些數(shù)值錄制成動畫,用在剪輯里面?;蛘呤褂米远x腳本來控制它們。

????如果我們不想讓玩家控制相機(jī)了,可以直接把輸入坐標(biāo)名稱刪除就可以了。

????我們可以手動使用Animator來給它們錄制動畫,

????或者用代碼來控制這些數(shù)值。

????最終效果可以看到使用它來創(chuàng)建一個用戶可以自由觀察視角的相機(jī)只需要簡單的幾步就可以完成的。

鏡頭切換
????下面我們將介紹Cinemachine的Clear Shot(鏡頭切換)功能。我們研究如何使用Clear Shot Collider組件配合多個虛擬相機(jī),在角色移動的時候去切換鏡頭。

????場景中的角色會在鼠標(biāo)點擊以后移動到對應(yīng)的位置?,F(xiàn)在我只使用了單個虛擬相機(jī)來追蹤她。
????通常在這類的冒險游戲里會有很多個相機(jī)散布在場景里,然后根據(jù)角色自身的移動來切換相機(jī)。使用Cinemachine的Clear Shot便可以輕松實現(xiàn)這個功能。

????首先我們要把它創(chuàng)建出來,在菜單的這個地方完成創(chuàng)建,

????選中它,我們可以看到它的屬性,看到虛擬子相機(jī)屬性,我們可以在此設(shè)置所有場景中要用到的鏡頭,

????創(chuàng)建完成以后會自動生成一個虛擬相機(jī)作為子對象,再把已經(jīng)存在的虛擬相機(jī)都作為它的子對象吧,

????點擊加號再增加一個虛擬相機(jī)。

????然后告訴它們要追蹤哪一個對象,

????我們還需要給每一個子相機(jī)添加碰撞組件,這個組件是用來計算什么時候進(jìn)行鏡頭切換的,

????在碰撞組件上我們可以設(shè)置碰撞層,本示例使用默認(rèn)層。

????還需要將每一個子相機(jī)的“保持視線”取消勾選,這樣相機(jī)會在自己的位置上停留。

????請看這個屬性,

????或者相機(jī)列表尾端的這個屬性,調(diào)整這個值可以設(shè)置相機(jī)的優(yōu)先權(quán)重,Cinemachine會優(yōu)先使用擁有較高的值的相機(jī)。

????另外,如果勾選隨機(jī)抽取,便會隨機(jī)使用一個鏡頭。

????運(yùn)行一下看看,當(dāng)角色走出一個相機(jī)的碰撞區(qū)便會切換到另一個相機(jī)鏡頭。

????調(diào)整每個相機(jī)的“最佳目標(biāo)距離",可以讓相機(jī)選擇最佳的目標(biāo)點,需要多多實踐來獲取最佳值。

????最后我要把鏡頭融合變換選擇為Cut,可以看到,使用Cinemachine可以簡單快速的完成鏡頭切換功能,輕松創(chuàng)建各類游戲的視覺體驗。

????感謝Shallot夏洛特大佬的分享。