摘要:在Unity中製作路徑動畫是有挺多方式的,基於Cinemachine的Dolly Path是一個簡單便捷的方法,咱們來快速的學習一下吧!
洪流學堂,讓你快人幾步。你好,我是跟着大智(VX: zhz11235)學Unity的萌新,我叫小新,這是我本週的學習總結報告哦。
製作路徑動畫在Unity中是100%會遇到的一個需求。方式也有很多,列舉幾種:
1、通過Animation製作動畫(優點:簡單;缺點:不直觀,無法直觀看到路徑中間的插值位置,靈活性差)
2、通過Tween插件(優點:靈活性高,可通過代碼運行時修改路徑點;缺點:有一定學習成本,可視化插件需付費,如Dotween Pro)
3、通過代碼手擼一個路徑動畫(優點:靈活性高,最適配自己項目的需求;缺點:難度較高)
4、通過Cinemachine的Dolly Track(優點:Unity官方插件,版本適配好,功能夠用;缺點:靈活性稍差)
最近咱們一直在學習Cinemachine,當然這篇理所當然應該嘗試下Cinemachine的Dolly Path。Let‘s go!
使用Dolly Path(滑軌路徑)
路徑動畫有兩個部分:如何創建路徑以及如何使用這個路徑。
創建Dolly Path
Cinemachine中有兩種Dolly Path組件:
- CinemachinePath組件:每個路徑點都可以設置位置、切線和翻轉角度,可以最大程度控制路徑。但是如果切線設置的不合理,相機在路徑上運動時可能會有不穩定的現象。
- CinemachineSmoothPath組件:每個路徑點都可以設置位置和翻轉角度。組件中會使用Bezier算法來推算路徑點之間的位置。雖然SmoothPath不能完全控制路徑,但是整個路徑會更平滑和連續。推薦優先使用
如何創建Dolly Path呢?
方法一:如果是在相機上製作路徑動畫,可以直接創建Dolly Camera。菜單欄Cinemachine > Create Dolly Camera with Track。點擊後會創建一個虛擬相機和dolly path。這個Path默認是SmoothPath。虛擬相機會自動設置好Body屬性爲Dolly Track並且Path屬性賦值爲創建出來的Dolly path。
方法二:如果是給GameObject製作路徑動畫,可以直接創建Dolly Cart。菜單欄Cinemachine > Create Dolly Track With Cart。點擊後會創建一個虛擬相機和DollyCart。這個Path默認是SmoothPath。只需要把做路徑動畫的物體作爲Cart的子物體即可。
方法三:直接創建Dolly Path。創建一個空物體,給空物體添加CinemachinePath或CinemachineSmoothPath組件。
如何編輯路徑點呢?
1、在Hierarchy中選中Path物體。這時候能在Scene中看到整個路徑以及上面的路徑點(小白球)。
2、可以在Inspector上的路徑點列表右下角點擊加號+添加路徑點。
3、可以點擊場景中的小白球或者Inspector上路徑點前面的序號按鈕選中一個路徑點。
4、選中路徑點時,場景中路徑點上會有移動工具,可以用來可視化移動。此外還可以在Inspector上直接修改數值。
CinemachinePath組件
CinemachinePath中定義了一系列的路徑點,定義在世界空間中。每個路徑點都有位置、切線和翻滾角度。在路徑點之間使用貝塞爾曲線插值,來獲得平滑、連續的路徑。
提示:儘管路徑位置始終是平滑連續的,但沿路徑設置動畫時仍然可能會產生不穩定的現象。當設置的切線沒有保證一階和二階導數的連續性時,就會發生這種情況。手動做到這一點並不容易,爲避免這種潛在的不穩定現象,儘量使用CinemachineSmoothPath。CinemachineSmoothPath自動設置切線以確保完全平滑。
屬性詳解
Resolution 每個路徑點之間採樣的次數。Cinemachine在計算路徑距離時使用此值來限制粒度。場景視圖中路徑Gizmo上的交叉線反映了該值。
Appearance 路徑在場景中顯示的外觀。只在編輯器中生效。
- Path Color 選中路徑時的顏色。
- Inactive Path Color 未選中路徑的顏色。
- Width 路徑軌道的寬度。
Looped 選中後,路徑會首尾相連。
Path Length 整個路徑長度,這個數據是隻讀的,根據所有路徑點計算出來的。
Selected Waypoint 當前選中的路徑點的信息。
Prefer Tangent Drag 當切線和位置的Gizmos在Scene視圖中重合時,選中該選項將Gizmo用來調節路徑點的切線。
Waypoints 定義路徑點的列表。
- Position 位置,在路徑局部空間中的位置(即相對於路徑GameObject本身的變換)
- Tangent 切線,定義了路徑點上曲線的切線。切線的長度代表了貝塞爾的強度。Path路徑點兩邊默認使用對稱的切線以確保平滑。
- Roll* 翻轉角度。朝向的其他軸方向是從切線和世界的向上向量推斷出來的。
CinemachineSmoothPath組件
與Cinemachine Path不同,CinemachineSmoothPath組件保證了一階和二階連續性,這意味着沿路徑動畫的對象不僅位置而且角速度也將是平滑且連續的。
屬性詳解
Resolution 每個路徑點之間採樣的次數。Cinemachine在計算路徑距離時使用此值來限制粒度。場景視圖中路徑Gizmo上的交叉線反映了該值。
Appearance 路徑在場景中顯示的外觀。只在編輯器中生效。
- Path Color 選中路徑時的顏色。
- Inactive Path Color 未選中路徑的顏色。
- Width 路徑軌道的寬度。
Looped 選中後,路徑會首尾相連。
Path Length 整個路徑長度,這個數據是隻讀的,根據所有路徑點計算出來的。
Waypoints 定義路徑點的列表。
- Position 位置,在路徑局部空間中的位置(即相對於路徑GameObject本身的變換)
- Roll* 翻轉角度。朝向的其他軸方向是從切線和世界的向上向量推斷出來的。
如何使用這個路徑
滑軌路徑(Dolly Path)是場景中的路徑點數組形成的一條路徑。
使用滑軌路徑分爲相機路徑動畫和其他物體路徑動畫:
- 相機路徑動畫建議使用Cinemachine中的VirtualCamera,然後Body的算法設置爲Tracked Dolly,然後將其中的Path屬性設置爲編輯好的Path。
- 其他GameObject的路徑動畫可以使用Cinemachine中的Dolly Cart組件。
CinemachineDollyCart組件製作路徑動畫
Cinemachine Dolly Cart翻譯過來是滑軌小車。相當於把一個物體放在小車裏,然後在軌道上移動。這個組件就是把當前所附着的GameObject沿着path移動。
可以直接從菜單欄創建Cinemachine > Create Dolly Track With Cart,這會創建出來一個CinemachineSmoothPath和CinemachineDollyCart。也可以直接給GameObject添加CinemachineDollyCart組件。
屬性詳解
Path 路徑對象
Update method 更新的方法。
- Update 正常更新
- Fixed Update 與物理更新同步
- Late Update 通常用於相機的更新
Position Unit 位置的單位
- Path Units 使用路徑點的序號。比如0代表第一個路徑點,1代表第二個路徑點。
- Distance 使用路徑的總長度。
- Normalized 歸一化。0代表路徑最開始的位置,1代表路徑結束的位置。
Speed 移動小車的速度。基於Position Unit設置的單位。如果速度不爲0,則小車會根據速度自動移動。
Position 當前小車所處的位置。基於Position Unit設置的單位。
擴展閱讀
- 【Cinemachine智能相機教程】VirtualCamera(四):Noise屬性
- 【Cinemachine智能相機教程】VirtualCamera(三):Aim屬性
- 【Cinemachine智能相機教程】VirtualCamera(二):Body屬性
- 【Cinemachine】VirtualCamera虛擬相機詳解(一)
- 5分鐘入門Cinemachine智能相機系統
- Unity編輯器錄屏神器:Unity Recorder
- 5分鐘製作過場動畫
- 【建議收藏】找不到免費的角色動畫?來試試mixamo
【擴展學習】在洪流學堂公衆號回覆
timeline
可以下載Timeline&Cinemachine系列教程全文帶目錄PDF哦,更有本文的視頻教程等着你!
呼~ 今天小新絮絮叨叨的真是夠夠的了。沒講清楚的地方歡迎評論,咱們一起探索。
我是大智(歡迎加我微信:zhz11235),你的技術探路者,下次見!
別走!點贊,收藏哦!
好,你可以走了。