摘要:在Unity中制作路徑動畫是有挺多方式的恩够,基于Cinemachine的Dolly Path是一個簡單便捷的方法,咱們來快速的學習一下吧羡铲!
洪流學堂蜂桶,讓你快人幾步。你好也切,我是跟著大智(VX: zhz11235)學Unity的萌新扑媚,我叫小新腰湾,這是我本周的學習總結(jié)報告哦。
制作路徑動畫在Unity中是100%會遇到的一個需求疆股。方式也有很多费坊,列舉幾種:
1、通過Animation制作動畫(優(yōu)點:簡單押桃;缺點:不直觀葵萎,無法直觀看到路徑中間的插值位置导犹,靈活性差)
2唱凯、通過Tween插件(優(yōu)點:靈活性高,可通過代碼運行時修改路徑點谎痢;缺點:有一定學習成本磕昼,可視化插件需付費,如Dotween Pro)
3节猿、通過代碼手擼一個路徑動畫(優(yōu)點:靈活性高票从,最適配自己項目的需求;缺點:難度較高)
4滨嘱、通過Cinemachine的Dolly Track(優(yōu)點:Unity官方插件峰鄙,版本適配好,功能夠用太雨;缺點:靈活性稍差)
最近咱們一直在學習Cinemachine吟榴,當然這篇理所當然應該嘗試下Cinemachine的Dolly Path。Let‘s go囊扳!
使用Dolly Path(滑軌路徑)
路徑動畫有兩個部分:如何創(chuàng)建路徑以及如何使用這個路徑吩翻。
創(chuàng)建Dolly Path
Cinemachine中有兩種Dolly Path組件:
- CinemachinePath組件:每個路徑點都可以設(shè)置位置、切線和翻轉(zhuǎn)角度锥咸,可以最大程度控制路徑狭瞎。但是如果切線設(shè)置的不合理,相機在路徑上運動時可能會有不穩(wěn)定的現(xiàn)象搏予。
- CinemachineSmoothPath組件:每個路徑點都可以設(shè)置位置和翻轉(zhuǎn)角度熊锭。組件中會使用Bezier算法來推算路徑點之間的位置。雖然SmoothPath不能完全控制路徑雪侥,但是整個路徑會更平滑和連續(xù)碗殷。推薦優(yōu)先使用
如何創(chuàng)建Dolly Path呢?
方法一:如果是在相機上制作路徑動畫校镐,可以直接創(chuàng)建Dolly Camera亿扁。菜單欄Cinemachine > Create Dolly Camera with Track。點擊后會創(chuàng)建一個虛擬相機和dolly path鸟廓。這個Path默認是SmoothPath从祝。虛擬相機會自動設(shè)置好Body屬性為Dolly Track并且Path屬性賦值為創(chuàng)建出來的Dolly path襟己。
方法二:如果是給GameObject制作路徑動畫,可以直接創(chuàng)建Dolly Cart牍陌。菜單欄Cinemachine > Create Dolly Track With Cart擎浴。點擊后會創(chuàng)建一個虛擬相機和DollyCart。這個Path默認是SmoothPath毒涧。只需要把做路徑動畫的物體作為Cart的子物體即可贮预。
方法三:直接創(chuàng)建Dolly Path。創(chuàng)建一個空物體契讲,給空物體添加CinemachinePath或CinemachineSmoothPath組件仿吞。
如何編輯路徑點呢?
1捡偏、在Hierarchy中選中Path物體唤冈。這時候能在Scene中看到整個路徑以及上面的路徑點(小白球)。
2银伟、可以在Inspector上的路徑點列表右下角點擊加號+添加路徑點你虹。
3、可以點擊場景中的小白球或者Inspector上路徑點前面的序號按鈕選中一個路徑點彤避。
4傅物、選中路徑點時,場景中路徑點上會有移動工具琉预,可以用來可視化移動董饰。此外還可以在Inspector上直接修改數(shù)值。
CinemachinePath組件
CinemachinePath中定義了一系列的路徑點模孩,定義在世界空間中尖阔。每個路徑點都有位置、切線和翻滾角度榨咐。在路徑點之間使用貝塞爾曲線插值介却,來獲得平滑、連續(xù)的路徑块茁。
提示:盡管路徑位置始終是平滑連續(xù)的齿坷,但沿路徑設(shè)置動畫時仍然可能會產(chǎn)生不穩(wěn)定的現(xiàn)象。當設(shè)置的切線沒有保證一階和二階導數(shù)的連續(xù)性時数焊,就會發(fā)生這種情況永淌。手動做到這一點并不容易,為避免這種潛在的不穩(wěn)定現(xiàn)象佩耳,盡量使用CinemachineSmoothPath遂蛀。CinemachineSmoothPath自動設(shè)置切線以確保完全平滑。
屬性詳解
Resolution 每個路徑點之間采樣的次數(shù)干厚。Cinemachine在計算路徑距離時使用此值來限制粒度李滴。場景視圖中路徑Gizmo上的交叉線反映了該值螃宙。
Appearance 路徑在場景中顯示的外觀。只在編輯器中生效所坯。
- Path Color 選中路徑時的顏色谆扎。
- Inactive Path Color 未選中路徑的顏色。
- Width 路徑軌道的寬度芹助。
Looped 選中后堂湖,路徑會首尾相連。
Path Length 整個路徑長度状土,這個數(shù)據(jù)是只讀的无蜂,根據(jù)所有路徑點計算出來的。
Selected Waypoint 當前選中的路徑點的信息声诸。
Prefer Tangent Drag 當切線和位置的Gizmos在Scene視圖中重合時酱讶,選中該選項將Gizmo用來調(diào)節(jié)路徑點的切線退盯。
Waypoints 定義路徑點的列表彼乌。
- Position 位置,在路徑局部空間中的位置(即相對于路徑GameObject本身的變換)
- Tangent 切線渊迁,定義了路徑點上曲線的切線慰照。切線的長度代表了貝塞爾的強度。Path路徑點兩邊默認使用對稱的切線以確保平滑琉朽。
- Roll* 翻轉(zhuǎn)角度毒租。朝向的其他軸方向是從切線和世界的向上向量推斷出來的。
CinemachineSmoothPath組件
與Cinemachine Path不同箱叁,CinemachineSmoothPath組件保證了一階和二階連續(xù)性墅垮,這意味著沿路徑動畫的對象不僅位置而且角速度也將是平滑且連續(xù)的。
屬性詳解
Resolution 每個路徑點之間采樣的次數(shù)耕漱。Cinemachine在計算路徑距離時使用此值來限制粒度算色。場景視圖中路徑Gizmo上的交叉線反映了該值。
Appearance 路徑在場景中顯示的外觀螟够。只在編輯器中生效灾梦。
- Path Color 選中路徑時的顏色。
- Inactive Path Color 未選中路徑的顏色妓笙。
- Width 路徑軌道的寬度若河。
Looped 選中后,路徑會首尾相連寞宫。
Path Length 整個路徑長度萧福,這個數(shù)據(jù)是只讀的,根據(jù)所有路徑點計算出來的辈赋。
Waypoints 定義路徑點的列表鲫忍。
- Position 位置毛俏,在路徑局部空間中的位置(即相對于路徑GameObject本身的變換)
- Roll* 翻轉(zhuǎn)角度。朝向的其他軸方向是從切線和世界的向上向量推斷出來的饲窿。
如何使用這個路徑
滑軌路徑(Dolly Path)是場景中的路徑點數(shù)組形成的一條路徑煌寇。
使用滑軌路徑分為相機路徑動畫和其他物體路徑動畫:
- 相機路徑動畫建議使用Cinemachine中的VirtualCamera,然后Body的算法設(shè)置為Tracked Dolly逾雄,然后將其中的Path屬性設(shè)置為編輯好的Path阀溶。
- 其他GameObject的路徑動畫可以使用Cinemachine中的Dolly Cart組件。
CinemachineDollyCart組件制作路徑動畫
Cinemachine Dolly Cart翻譯過來是滑軌小車鸦泳。相當于把一個物體放在小車里银锻,然后在軌道上移動。這個組件就是把當前所附著的GameObject沿著path移動做鹰。
可以直接從菜單欄創(chuàng)建Cinemachine > Create Dolly Track With Cart击纬,這會創(chuàng)建出來一個CinemachineSmoothPath和CinemachineDollyCart。也可以直接給GameObject添加CinemachineDollyCart組件钾麸。
屬性詳解
Path 路徑對象
Update method 更新的方法更振。
- Update 正常更新
- Fixed Update 與物理更新同步
- Late Update 通常用于相機的更新
Position Unit 位置的單位
- Path Units 使用路徑點的序號。比如0代表第一個路徑點饭尝,1代表第二個路徑點肯腕。
- Distance 使用路徑的總長度。
- Normalized 歸一化钥平。0代表路徑最開始的位置实撒,1代表路徑結(jié)束的位置。
Speed 移動小車的速度涉瘾≈基于Position Unit設(shè)置的單位。如果速度不為0立叛,則小車會根據(jù)速度自動移動负敏。
Position 當前小車所處的位置∏舭停基于Position Unit設(shè)置的單位原在。
擴展閱讀
- 【Cinemachine智能相機教程】VirtualCamera(四):Noise屬性
- 【Cinemachine智能相機教程】VirtualCamera(三):Aim屬性
- 【Cinemachine智能相機教程】VirtualCamera(二):Body屬性
- 【Cinemachine】VirtualCamera虛擬相機詳解(一)
- 5分鐘入門Cinemachine智能相機系統(tǒng)
- Unity編輯器錄屏神器:Unity Recorder
- 5分鐘制作過場動畫
- 【建議收藏】找不到免費的角色動畫?來試試mixamo
【擴展學習】在洪流學堂公眾號回復
timeline
可以下載Timeline&Cinemachine系列教程全文帶目錄PDF哦彤叉,更有本文的視頻教程等著你庶柿!
呼~ 今天小新絮絮叨叨的真是夠夠的了。沒講清楚的地方歡迎評論秽浇,咱們一起探索浮庐。
我是大智(歡迎加我微信:zhz11235),你的技術(shù)探路者,下次見审残!
別走梭域!點贊,收藏哦搅轿!
好病涨,你可以走了。