擴展
擴展組件可以增強虛擬相機的行爲,例如,Collider擴展組件可用防止相機進入碰撞體裏面,從而導致丟失目標視野。Cinemachine包含各種擴展。通過派生CinemachineExtension類來創建您自己的自定義擴展。
如果要給虛擬相機添加一個擴展:
- 在Scene窗口或Hierarchy窗口中選擇你的虛擬相機。
- 在檢查器窗口,使用Add Extension下拉菜單選擇一個擴展。
避免碰撞和評估拍攝質量
當角色和物體在複雜場景中移動時,場景中的障礙物有時會出現在相機和目標之間。類似地,你可能需要將相機移動到場景中另一個遊戲對象已經佔據的位置。
Cinemachine提供了擴展來處理這些情況:
- Cinemachine Collider
- Cinemachine Confiner
Cinemachine Collider
Cinemachine Collider是Cinemachine虛擬相機的擴展。它對虛擬相機的最終位置進行後期處理,以試圖保持Loot At目標在虛擬相機的視野內。它通過遠離阻礙視圖的遊戲對象來做到這一點。
添加一個Cinemachine Collider擴展到Cinemachine虛擬相機,可以完成以下幾個功能:
- 將相機遠離場景中的障礙物。
- 把相機放在虛擬相機和它的觀察目標之間的障礙物前面。
- 評估拍攝質量。拍攝質量由虛擬相機的位置和它理想位置之間距離,虛擬相機和目標位置的距離,以及虛擬相機和阻礙視野對象間的距離決定。其他模塊也用了拍攝質量,比如Clear Shot。
Collider使用了Physics Raycaster。因此,Cinemachine Collider要求障礙具有碰撞體。這種需求需要性能成本。如果這個成本在你的遊戲中難以承受,那就考慮用不同的方式來實現這個功能。
屬性 | 功能 | |
Collide Against | 指定導致碰撞的物體處於哪些層,它會忽略不在所選層中的遊戲對象。 | |
Minimum Distance From Target | 當障礙物和目標的距離小於此值時會被忽略。 | |
Avoid Obstacles | 當目標被障礙物遮擋時,選中將會允許相機移動以避開目標,未選中時,相機將不會移動。 | |
Distance Limit | 碰撞檢測射線的長度,Avoid Obstacles勾選時可用,上面提到Collider使用Physics Raycaster射線來判斷是否有碰撞,該值表示射線的最大長度,如果障礙物到相機的距離大於此值時,相機將不會移動。輸入0表示使用當前相機到目標的實際距離。 | |
Camera Radius | 相機的半徑,Avoid Obstacles勾選時可用,由於視線被遮擋,相機移動到障礙物之前,相機和障礙物保持的距離, | |
Strategy | 保持目標視線的方式,Avoid Obstacles勾選時可用。 | |
Pull Camera Forward | 移動相機沿着其本地座標系Z軸向前,直到它是在障礙物面前最近的目標。 | |
Preserve Camera Height | 移動相機到另一個視角,同時試圖保持相機在其原來的高度。 | |
Preserve Camera Distance | 移動相機到另一個視角,同時試圖保持相機與目標的原始距離。 | |
Smoothing Time | Avoid Obstacles勾選時可用,相機避開障礙物所需的最小時間。當環境有許多障礙物時,可以減少相機的運動。 | |
Damping | Avoid Obstacles勾選時可用,在遮擋消失後,如何快速將相機恢復到正常位置。小的數字使相機反應更靈敏。較大的數字使相機反應更慢。 | |
Damping When Occluded | Avoid Obstacles勾選時可用,移動相機以避開障礙物的速度。小的數字使相機反應更靈敏。較大的數字使相機反應更慢。 | |
Optimal Target Distance | 如果大於0,當目標距離更接近這個距離時,給予更高的拍攝分數(影響拍攝質量)。將此屬性設置爲0以禁用此特性。 | |
Transparent Layers |
這些層上的對象永遠不會阻礙目標的視野。 |
|
Minimum Occlusion Time | 除非遮擋至少持續了這麼長時間,否則不會有什麼影響。 | |
Maximum Effort | 處理障礙物的上限,較高的值會影響性能。設置爲4時,足夠應付大多數情況。 | |
Ignore Tag | 帶有此標籤的障礙將被忽略。建議將該字段設置爲目標的標記。 |
Cinemachine Confiner
使用Cinemachine Confiner擴展來限制相機的位置在一個體積內或一個區域內。
Confiner可在2D或3D模式下運行。模式影響它接受的邊界形狀的類型。在3D模式下,相機在3D中的位置被限制在一個體積內。這也適用於2D遊戲,但你需要將深度考慮在內。在2D模式中,你不需要擔心深度。
屬性 | 功能 | |
Confine Mode | 2D模式還是3D模式,用於判斷是限制相機在體積內還是區域內 | |
Confine 2D | 限制相機在區域內 | |
Confine 3D | 限制相機在體積內 | |
Bounding Volume | 當Confine Mode設置爲Confine 3D時可用,提供一個Collider體積使相機限制在裏面運動。 | |
Bounding Shape 2D | 當Confine Mode設置爲Confine 2D時可用,提供一個Collider 2D區域使相機限制在裏面運動。 | |
Confine Screen Edges | 當相機爲正交相機時可用,勾選將會使相機的視野(也就是屏幕的邊緣)限制在提供的區域內,可防止相機越過場景邊界。否則只限制相機中心在提供的區域內。 | |
Damping | 當相機越出提供的限制體積或區域邊界時,如何將相機拉回限制體積或區域內,值越小越靈敏,越大越慢。 |