在第一或第三人稱ACT和FPS游戲中,相機的運動需求是多種多樣的,Unity內置的Cinemachine包可以助你快速實現不同相機功能,例如范圍追蹤,邊界設置等。
例如,考慮這樣一個功能,這在很多游戲中都是非常常用的:
1.在屏幕中心的一定范圍內攝像機追蹤一個主角單位,但這是一個惰性相機,當且僅當主角快要離開屏幕中心向屏幕邊緣移動時相機才跟隨過去。
2.當攝像機運動到了地圖邊緣時,它不再繼續追蹤目標,也就是說,相機還需要界定一個運動范圍。
觀察上圖,圖中黃色的點為攝像機跟蹤的目標,淡藍色的框為屏幕相機追蹤的過渡區域,只有當追蹤目標移動到淡藍色的框中時,攝像機才開始朝角色的運動方向追蹤,角色運動停止后,攝像機會保證追蹤的主角停止在淡藍色框內,紅色框外。
圖中主角已經運動到地圖的邊緣,所以攝像機不會繼續向上或向右運動,這是因為利用碰撞盒子設置了攝像機的運動范圍。
如上圖,攝像機已經運動到了黃色碰撞盒子的邊界,它無法再繼續向上或向右運動,這樣可以保證攝像機的視野范圍不會超出地圖的邊緣。
知道了這些后,再來了解Cinemachine的功能將變得非常容易。
Cinemachine的功能看上去非常之多,但最終還是離不開虛擬攝像機這一組件。
我們可以利用菜單欄先創建一個虛擬攝像機:
雖然后面有各種各樣的攝像機組件可以選擇,但其實都是虛擬攝像機的不同設置而已,只要弄清楚了這一個組件的用法,其他都可以利用設置或自定義腳本來實現。
基本模塊中比較重要的就是Follow和Look At,Follow是追蹤的主角Transform,也可以運行后動態設置。
Look At根據需要選擇是否設置,如果攝像機需要需要進行視角方位的旋轉變換,則需要有一個Look At的目標,可以根據該目標的朝向來進行視角的旋轉;只是跟隨主角在固定的視角方向進行平移運動的話,就可以不用設置Look At。
Body模塊主要功能是處理場景中相機和它的目標之間的位置關系。
用的比較多的是Ransposer和Framing Transposer,Framing Transposer可以很方便的實現惰性相機,里邊有一個參數是Dead Zone區域設置,默認情況下是零,這時相機始終跟隨目標位置反復移動,當Dead Zone擴大后,相機在屏幕中間的區域就會變得非常懶,就像死了一樣,只有角色移動出死亡區域后相機才重新開始追蹤目標。(如最上面圖中的全透明區域)
Extentions提供了額外的擴展組件功能:
本例中增加了攝像機的區域設置,選擇之后會自動增加一個腳本:
通過該腳本組件可以指定一個2D或3D的碰撞盒子作為作為攝像機的運動范圍,利用該組件可以快速控制攝像機只在地圖視野范圍內運動。
官方參考:
https://connect.unity.com/p/li-yong-cinemachinekuai-su-chuang-jian-you-xi-zhong-de-xiang-ji-xi-tong