Cinemachine系列——Cinemachine Collider

陈侠云發表於2024-10-23

image

Cinemachine Collider 是Cinemachine虛擬相機的一個擴充套件,它對虛擬相機的最終位置進行後處理,旨在保持與虛擬相機的“關注目標”(Look At target)之間的視線。它透過遠離阻礙視線的遊戲物件來實現這一點。

新增Cinemachine Collider擴充套件到Cinemachine虛擬相機,可以完成以下任務:

將相機推離場景中阻礙視線的障礙物:當有物體阻擋視線時,相機會自動移動,以確保視線暢通。

將相機放置在障礙物前面:如果有障礙物位於虛擬相機與其關注目標之間,相機會調整位置,確保關注目標可見。

評估鏡頭質量:鏡頭質量是衡量虛擬相機與理想位置之間距離、虛擬相機與目標之間距離以及阻礙視線的物體的指標。其他模組(如Clear Shot)也會使用鏡頭質量。

Cinemachine Collider使用物理射線檢測(Physics Raycaster)。因此,Cinemachine Collider要求潛在障礙物具有碰撞體(collider)體積。這個要求會帶來一定的效能開銷。如果這個開銷在你的遊戲中過於高昂,可以考慮以其他方式實現相同的功能。

Collide Against

Cinemachine Collider 會將這些層中的遊戲物件視為潛在的障礙物。它會忽略那些不在選定層中的遊戲物件。

簡單來說,Cinemachine Collider 只會檢測並處理在指定層中的物體,認為它們可能會阻礙相機的視線。對於不在這些層中的物體,相機會視而不見,不會考慮它們作為障礙物。這樣可以提高效能,並確保相機的調整隻針對實際需要處理的物件。

Ignore Tag

簡單來說,如果一個障礙物被賦予了特定的標籤,那麼Cinemachine Collider將不會考慮這些障礙物為阻礙視線的物件。為了確保目標在視野中能夠清晰可見,建議將這個設定的標籤與目標的標籤相同,這樣可以有效避免相機因目標本身而受到干擾。

Transparent Layers

在這些層上的物體將永遠不會阻礙目標的視線。

簡單來說,任何位於這些指定層的物體都不會被視為視線的障礙,因此相機在調整位置時會忽略它們。這意味著這些層中的物體不會影響到目標的可見性,確保目標始終能夠清晰地顯示在畫面中。
(比如給透明的物體新增這一層?)

Minimum Distance From Target

忽略距離目標的支點(pivot point)小於這個距離的障礙物。

簡單來說,設定一個距離閾值,任何距離目標支點小於這個值的障礙物將不會被考慮為阻礙視線的物件。這可以幫助相機在目標非常接近其他物體時,避免不必要的調整,從而保持畫面的穩定性和流暢性。

Avoid Obstacles

勾選此選項以允許Collider在目標被障礙物遮擋時移動相機。可以使用距離限制、相機半徑和策略屬性來調整避開障礙物的方法。如果不勾選,Cinemachine Collider會評估虛擬相機與其理想位置之間的距離、虛擬相機與目標之間的距離,以及有多少障礙物阻礙了目標的視線,從而給出一個鏡頭質量的評分,但不會嘗試移動相機以改善鏡頭效果。

簡單來說,當這個選項被勾選時,相機會在目標被擋住時自動調整位置,以確保目標可見。你可以透過相關設定來控制相機如何避開這些障礙物。如果不勾選,相機將不會主動移動,只會報告當前的鏡頭質量,意味著可能會出現目標被遮擋而無法清晰顯示的情況。

Distance Limit

在檢查到這個相機的目標的視線是否清晰時,最大的射線檢測距離。輸入0將使用當前到目標的實際距離。此選項在勾選“避免障礙物”(Avoid Obstacles)時可用。

簡單來說,當啟用“避免障礙物”選項後,你可以設定一個最大距離來檢測相機與目標之間的視線是否被阻擋。如果設定為0,相機會自動使用當前實際到目標的距離進行檢測。這一設定可以幫助開發者控制相機在遮擋情況下的行為,從而確保目標在畫面中可見。

Minimum Occlusion Time

除非遮擋持續時間至少達到這個設定的時間,否則不採取任何行動。

簡單來說,這意味著相機在判斷目標被遮擋時,不會立即做出反應,只有當遮擋情況持續了一定的時間後,才會採取相應的措施。這種設定可以避免由於短暫的遮擋(例如,某個物體快速經過)而導致相機頻繁調整,從而保持畫面的穩定性。

Camera Radius

相機會盡量保持與任何障礙物之間的這個距離。建議將這個值設定得小一些。如果由於相機的視野(FOV)過大而導致相機看到障礙物內部,可以增加這個值。

簡單來說,這個設定控制相機與障礙物之間的最小距離。保持這個值較小可以讓相機更貼近目標,但如果視野過大,可能會使相機穿透障礙物,從而造成不自然的視角。在這種情況下,可以適當增加這個值,以確保相機不會進入障礙物內部,保持更自然的拍攝效果。

Strategy

Collider保持目標可見的方式。當“避免障礙物”(Avoid Obstacles)選項被勾選時,此設定可用。

簡單來說,當目標被障礙物遮擋時,Cinemachine Collider會透過不同的方法來調整相機的位置,確保目標能夠儘量保持在視野中。這個設定允許你選擇相機如何處理視線被遮擋的情況,比如相機是向後推開、改變角度,還是採取其他策略來確保目標可見。

  • Pull Camera Forward:沿著相機的Z軸向前移動相機,直到它位於離目標最近的障礙物前面。簡單來說,這個設定讓相機自動向前移動,以確保它不被障礙物遮擋,而是保持在離目標最近的障礙物的前面。這樣可以確保目標在畫面中可見,同時避免障礙物對視線的干擾。
  • Preserve Camera Height:在嘗試保持相機原始高度的同時,將相機移動到一個替代的視角。簡單來說,這個設定允許相機在不改變高度的情況下,調整位置以獲得不同的拍攝角度。這種方式可以幫助開發者在保證視角變化的同時,保持相機的高度不變,從而實現更靈活的畫面構圖。
  • Preserve Camera Distance:在儘量保持相機與目標之間原始距離的同時,將相機移動到一個替代的視角。簡單來說,這個設定允許相機在不改變與目標距離的情況下,調整位置以獲得不同的拍攝角度。這種方式可以幫助開發者在保持與目標相對距離不變的情況下,探索多樣化的視角,確保畫面構圖的靈活性和多樣性。

Maximum Effort

處理障礙物碰撞的上限數量。較高的數字可能會影響效能。在大多數環境中,4個就足夠了。

簡單來說,這個設定限制了相機在檢查視線時,能夠處理的障礙物數量。如果設定的值過高,可能會導致遊戲效能下降,因此建議在大多數情況下,將這個值設定為4,這通常足以確保相機正確識別和處理障礙物,而不會造成過多的效能負擔。

Smoothing Time

在距離目標最近的點上保持相機的最小時間(以秒為單位)。這個設定可以用來減少在障礙物較多的環境中相機的多餘移動。當勾選“避免障礙物”(Avoid Obstacles)時,此選項可用。

簡單來說,這個設定要求相機在靠近目標的最短時間內不進行頻繁的調整,以減少在環境中障礙物較多時,相機因不斷移動而造成的混亂。這有助於提高畫面的穩定性和流暢性,確保目標在視線中的持續可見性。

Damping

遮擋消失後,相機返回到正常位置的速度。較小的數值會使相機反應更快,而較大的數值會使相機反應更慢。當勾選“避免障礙物”(Avoid Obstacles)時,此選項可用。

簡單來說,這個設定控制了相機在視線被遮擋後恢復到原來位置的速度。如果設定較小,相機會快速調整到正常位置;如果設定較大,相機的調整會變得較慢。這種靈活的響應設定可以根據場景需求進行調整,以確保相機在遮擋消失後能平滑地恢復視角。

Damping When Occluded

相機避開障礙物的移動速度。較小的數值會使相機反應更快,而較大的數值會使相機反應更慢。當勾選“避免障礙物”(Avoid Obstacles)時,此選項可用。

簡單來說,這個設定控制了相機在檢測到障礙物時的反應速度。如果數值較小,相機會迅速移動以避開障礙物;如果數值較大,相機的移動反應會比較慢。根據場景需求,可以調整這個設定,以確保相機在遇到障礙物時能夠靈活而順暢地調整位置。

Optimal Target Distance

如果設定的值大於零,當目標距離此值更近時,鏡頭的評分會更高。將此屬性設定為0可以禁用此功能。

簡單來說,這個設定用於調整鏡頭質量評分的機制。如果目標離設定的距離越近,鏡頭的評分就會提高,意味著鏡頭質量更好。如果不希望根據目標距離影響評分,可以將這個值設定為0,從而關閉這一功能。

相關文章