簡介
當我們想要建立一個物件動畫或是模擬物件的移動在Unity3D實作中有幾種方法,第一種是用Unity提供的Animation設定物件影格,加上Animator在不同的條件下控制不同的Animation。第二種是使用C#來控制物件位移,或是使用前幾篇有提到的iTween套件也可以做到此效果。第三種就是使用本篇要介紹的是專屬物件路徑移動的免費套件,讓我們繼續看下去。
使用步驟
Step 0 :先到Asset Store搜尋Bézier Path Creator套件,並Download & Import至你的專案中。
Step 1 : Import之後會在你的Asset資料夾中多了一個PathCreator,而在這資料夾中有一些範例,在Examples→Scenes。而我們這篇要說怎麼從頭製作。
Step 2 : 我們要先建立編輯自己想要的路徑,請先在場景中Create GameObject並命名為Path(名稱沒特別意義,只為了好辨識),並在此物件中新增剛剛Import進來的套件功能PathCreator。
Step 3 : 接著我們新增一個要附著在此Path的物件,你也可以拿一個你自己建的模型來跟隨。並新增一個C# Script,先叫做Follower.cs,將下方的程式碼複製貼上在此檔案中。我將把程式碼的功能解釋以註解在下方程式碼中。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//使用PathCreation介面功能在此程式中
using PathCreation;
//要注意你的Follower.cs名稱要與檔案名相同
public class Follower : MonoBehaviour
{
//新增一個類別叫做PathCreator並給他在此程式名稱叫做pathCreator
public PathCreator pathCreator;
//新增一個浮點數資料型態,用意控制物件在軌跡上移動的速度,預設5f
public float speed = 5;
//新增一個浮點數來計算已經跟隨的路徑
float distanceTravelled;
//必須要在MonoBehaviour Update來每個Frame來執行物件跟隨軌跡移動
void Update()
{
//時時計算軌跡堆疊 speed * Time.deltaTime(系統時間計算器)
distanceTravelled += speed * Time.deltaTime;
//transform.position(首先這程式必須掛載再要跟隨的物件元件下,他會去控制此物件的移動),並使用pathCreator類別中的方法來控制物件,輸入方法參數為distanceTravelled)
transform.position = pathCreator.path.GetPointAtDistance(distanceTravelled);
//同上方的position,這邊是物件旋轉,必須要使用此功能,不然物件移動起來會很假
transform.rotation = pathCreator.path.GetRotationAtDistance(distanceTravelled);
}
}
Step 4 : 接著進入編輯路徑的關卡,剛新增路徑物件時會有兩個紅點(紅色箭頭),以及兩個藍點(橙色箭頭),而上圖的綠色是意圖線是貝茲取線(背景太黑我自己畫出來),而路徑會依照你所設定的兩紅點+貝茲點形成路徑,在途中是以綠色細線呈現。很重要的一點是我們要怎樣新增紅色節點,就有如EasyRoad新增節儉方式依樣,請按下Shift+ 滑鼠右鍵即可。
Step 5 : 而我們這篇只提到貝茲路徑,這套件還有提供Vertex Path,之後有機會再來解釋。延續著上面新增節點後,我們會發現節點的位置會很飄,我們必須透過下圖的節點Position來調教子節點的位置。順便來看一下參數表,Space代表你的路徑是要在2D或3D空間移動,Control Mode就是物件控制的方式,Closed Path勾選的話會讓你的路徑變成封閉的路徑,自動頭尾相連,Enable Transforms必須打勾,Rest Path就是路經所有參數變回原始狀態。
Step 6 : 接著Normals Option參數則是調整物件跟隨時的旋轉,可以看到下圖二在路徑上有許多黃色的細毛線,他的擺動是透過 Normals Option →Global Angle,而Flip Normals就是將所有黃色細毛做水平翻轉。
Step 7 : 路徑都設定好之後請點選要跟隨物件 ,可以看到Follower元件中有個Path Creator,將路徑拖拉到此區塊中,基本上就完成了。
Step 8 : 看到下方影片發現飛機的跟隨角度怪怪的,是因為模型的Z軸反了,只要調整一下即可。還要提的一點是剛剛的Path Creator的調整參數最下面有個Display Option,這邊都是在控制路徑控制GUI點的大小、範圍等等。
小結
如此一來我們可以將此小技巧應用在AI的NPC路徑規劃配合程式碼,也可以使用在UGUI的特殊Loading畫面等等,是一個非常實用的技能。