unity2D游戲攝像機(jī)跟隨
自用代碼:

上邊的代碼是攝像機(jī)使用SmoothDamp平滑移動。
接下來說一下在網(wǎng)上學(xué)到的2D相機(jī)跟隨
Unity中提供了專屬的攝像機(jī)插件進(jìn)行使用:
官方Cinemachine插件:
首先從unity中的window中的package manage中添加Cinemachine插件,完成后會出現(xiàn)Cinemachine如圖:


Cinemachine中的Virtual Camera(虛擬相機(jī))可以說是最核心的組件。使用Cinemachine時,你需要記住一個準(zhǔn)則:場景中一般只有一個Unity相機(jī)(除了需要制作分屏、畫中畫等效果的時候),上面掛著CinemachineBrain腳本;其他相機(jī)都是使用Cinemachine中的虛擬相機(jī),可以有很多個。(平常使用這個較多)
菜單欄,選擇Cinemachine > Create Virtual Camera。Unity會在場景中添加一個。Unity會在場景中添加一個GameObject,上面有一個Virtual Camera組件。如果你的Unity相機(jī)上沒有CinemachineBrain腳本,Cinemachine也會自動添加CinemachineBrain腳本到Unity相機(jī)上。創(chuàng)建后如圖:

如果相機(jī)需要跟隨物體移動,指定一個物體到Follow屬性上。虛擬相機(jī)會自動將Unity相機(jī)的位置和Follow物體保持相對位置,包括Follow物體移動的時候:

接著是邊緣的檢測:
相機(jī)的邊緣檢測需要添加Cinemachine Confiner組件,并且創(chuàng)建一個空物體來進(jìn)行Polygon Collider的存放:

并且添加Polygon Collider 2D組件將需要顯示的范圍進(jìn)行框起來:

接著回到虛擬相機(jī)中添加Confiner組件并將控制可視范圍的空物體拖拽其上面:

即可實現(xiàn)邊緣檢測,超出邊緣不可見。
CinemachineVitualCamera組件的屬性解讀:
Solo:用于調(diào)試。選中這個按鈕時,此虛擬相機(jī)會直接控制Unity相機(jī)顯示在Game窗口中,用于相機(jī)的調(diào)試。(忽略優(yōu)先級,但是需要所在GameOjbect是激活狀態(tài))
Game Window Guides:勾選時,Game窗口會顯示輔助線,用于設(shè)置虛擬相機(jī)的各個屬性。
Look At屬性設(shè)置了物體,Aim設(shè)置為Composer或Group Composer或 Follow屬性設(shè)置了物體,Body設(shè)置為Framing Composer
Save During Play:虛擬相機(jī)的屬性在運行時的修改可以被保存下來,退出Play狀態(tài)時不會被重置。
Priority優(yōu)先級:虛擬相機(jī)的重要程度,用于Live鏡頭的選擇。數(shù)值越高代表優(yōu)先級越高。Cinemachine Brain會根據(jù)這個屬性從所有激活的虛擬相機(jī)中選擇活動的虛擬相機(jī)。在Timeline上使用時這個屬性不生效。
Follow跟隨目標(biāo):虛擬相機(jī)會跟隨這個物體移動。Body屬性基于這個目標(biāo)物體更新Unity相機(jī)的位置。如果你想讓相機(jī)保持它自己的位置不變,不要設(shè)置這個屬性。
Look At瞄準(zhǔn):鏡頭瞄準(zhǔn)的物體目標(biāo)。Aim屬性使用這個屬性來更新Unity相機(jī)的旋轉(zhuǎn)。如果你想相機(jī)保持原來的角度,不要設(shè)置這個屬性。
Standby Update 待命時的更新方式,當(dāng)虛擬相機(jī)物體沒有被禁用,但是優(yōu)先級不足時,虛擬相機(jī)處于待命狀態(tài)。這個屬性會影響性能,通常設(shè)置為Never是最好的,但是有時候可能需要虛擬相機(jī)更新來做一些鏡頭相關(guān)的計算判斷。
Never 不更新
Always 每幀更新
Round Robin 循環(huán)更新:所有的待命虛擬相機(jī)循環(huán)更新,每幀更新一個相機(jī)(例如有10個待命的相機(jī),第一幀更新第一個相機(jī),第2幀更新第2個相機(jī),…,第11幀更新第1個相機(jī),以此類推)
Lens鏡頭設(shè)置:對應(yīng)Unity相機(jī)中的屬性,也可以從Preset中選擇或者從現(xiàn)有的設(shè)置創(chuàng)建新的Preset。
Dutch鏡頭旋轉(zhuǎn)。這個屬性在Unity相機(jī)中是沒有的,可以用來控制鏡頭的旋轉(zhuǎn)。(在屏幕空間的旋轉(zhuǎn))
ens鏡頭設(shè)置:對應(yīng)Unity相機(jī)中的屬性,也可以從Preset中選擇或者從現(xiàn)有的設(shè)置創(chuàng)建新的Preset。
Dutch鏡頭旋轉(zhuǎn)。這個屬性在Unity相機(jī)中是沒有的,可以用來控制鏡頭的旋轉(zhuǎn)。(在屏幕空間的旋轉(zhuǎn))
Transitions相機(jī)轉(zhuǎn)換的相關(guān)設(shè)置:
Blend Hint混合方式:
None 無,默認(rèn)線性混合
Spherical Position 根據(jù)Look At的物體球面旋轉(zhuǎn)混合
Cylindrical Position 根據(jù)Look At的物體柱面旋轉(zhuǎn)混合(水平方向圓弧,垂直方向線性)
Screen Space Aim When Target 在屏幕空間瞄準(zhǔn)目標(biāo)
Inherit Positon 下一個相機(jī)變成活動相機(jī)時,從上一個相機(jī)繼承位置,即保持兩個相機(jī)位置相同。
On Camera Live事件,相機(jī)變?yōu)榛顒訒r會觸發(fā)對應(yīng)的事件。
Body、Aim、Noise暫無介紹。
Extension:可以給虛擬相機(jī)添加額外的擴(kuò)展。
后半部分是在網(wǎng)上學(xué)到的使用插件來進(jìn)行攝像機(jī)跟隨,原文鏈接:https://blog.csdn.net/Leo__ch/article/details/120240661