Unity Population Engine 教學

Population Engine 教學

Population Engine 是一套支援 Unity 引擎的群眾系統外掛程式,可以輕鬆建立群眾 AI 系統,操作容易上手且無需撰寫程式。

Population Engine 官方教學 [ 連結 ]

 

將 Population Engine 下載至專案,開啟 [ Population Engine > Demo Scenes ] 資料夾的 City Demo (View Only) 展示場景。

 

本教學使用免費模型製作 NPC 角色,您也可以使用自已的模型,場景上需要 NPC 行走的地面。

確認 NPC 角色模型的 Animation Type 動畫型態選擇 Humanoid 模式,將 NPC 模型拖曳到遊戲場景。

 

將 NPC 角色的 Animator Controller 改為使用 PopulationAnimator ,並將 Apply Root Motion 取消勾選,透過程式控制 NPC 移動。

 

增加 Rigidbody 剛體元件與 Capsule Collider 碰撞器,並將碰撞器調整到適當大小。將 Rigidbody 中的 Freeze Rotation 中的 X 與 Z 凍結旋轉

 

接著再加入 NPC Events 與 NPC Motor 元件後,再將 Use Animator 勾選。

 

將 NPC 角色轉換為預製物件,然後目前的 NPC 角色從場景刪除。

 

製作 NPC 產生器

建立空物件並命名為「Population Generator」,套用 Population Generator 腳本元件,這是進入遊戲時動態生成 NPC 的控制物件。

 

找到 Population Generator 元件中的 SPAWN SETTINGS 項目,將先前的角色預置物件加入 Objects To Spawn 陣列。

您可以修改 Spawn Radius 數值設定 NPC 的重生範圍。

按下 GENERATE NOW 按鈕,將會預先生成設定的 NPC 角色,避免遊戲中 NPC 突然出現的問題。

 

此時動態生成的 NPC 可能出現飄浮在半空中的問題,先刪除這些場景上的遊戲角色。

可以找到 Population Generator 元件 OBJECT HEIGHT POSITION 項目中的 Y Position 項目。

原本是 User Spawner Height 用此物件的高度來設定角色的高度,可以移動此物件來設定角色生成的高度。

或是更改為 Use Raycast Height 項目,使用射線來偵測高度,再按下 GENERATE NOW 按鈕即可讓人物生成於正常的位置。

 

 

如果在生成的地方有障礙物,可以使用標籤來區分是否可以生成,匯入 Population Engine 套件後,會自動增加 CanSpawn 標籤,直接使用即可。

將地板物件的標籤變更為 CanSpawn 。

 

再到 Population Generator 元件的 OBSTACLE AWARENESS PLACEMENTS 項目中,將Awareness Enable 勾選,再將 Spawn On Tags 項目中,將 Size 變更為 1 後,再將 CanSpawn 輸入至 Element 0 欄位中。

 

為了測試 避障功能,我們可以在場地中建立一個方塊,並且放入至生成範圍中,再按下 GENERATE NOW 按鈕。

附註:如果按下按鈕後無反應,可以試著將 Elevation Level 數值調高。

此時生成的角色,在建立時就會避開障礙物了。

 

刪除場景中的角色後按下 Play 測試,此時會發現一些錯誤訊息:

一、PopultionEngineEditor ( PopultionEngine 元件在Inspector 的特別介面 ) 中的圖片顯示異常,可以不必理會。

二、找不到 Waypoint Group 物件,以下說明解決的方法。

 

建立一個空物件,並命名為 Waypoint 新增 WaypointVisualizer 元件。

 

按下 [ + ] Add Waypoint 來建立一個路徑,或是按下 [ + 4 ] Add Surrounding Waypoints 或 [ + 6 ] Add Waypoint as LINE 建立多個路鍵,在此只增加一個路徑。

新增一個路徑後,此物件會增加名為 Waypoint 的子物件,如果要調整路徑可移動此物件。

 

再到 Generate Population 元件中,找到 WAYPOINT ROUTE 項目,這裡可以將先前創建的 Waypoint 物件放入此欄位內。

 

接著可以找到 SPAWN SETTING 項目,這裡可以變更 Total To Spawn 或 Spawn Forever 來設定生成物件的總數,也可以設定 Area Type 來設定生成方式。

注意:不管生成地點在哪裡,生成的角色一定會先往第一個 Waypoint 移動。

接著再設定 Waypoint Path Type 項目中的 Route Type 欄位,此處可以設定角色到最後一個 Waypoint 時是否循環,或是隨機往任何 Waypoint 移動,範例中將生成點放置於第一個 Waypoint 附近。

此時按下 Play 測試,會發現有些角色被方塊擋住了,如果要解決需使用 NavMesh 導航網格。

 

先將方塊以及地板物件,變為 Static 靜態物件。

啟動 [ Window > Navigation ] 開啟導航網格面板,開啟 Bake 分頁,並直接按下 Bake 按鈕,即可烘焙出可行走範圍。

接著點選角色的預製物件,找到 Npc Motor 元件,將 NAVMESH AGENT? 項目中的 Use Nav Mesh Agent 勾選。

 

再按下 Play 測試會發現角色會躲避白色方塊了。

 

注視功能

當場景中有需要被注視的物件時,可以設定幾個參數來實現。

 

首先在場景的適當位置加入需要被 NPC 注視的物件,在此使用一個膠囊物件示範。

到 Generate Population 元件中的 AUTO-FOCUS SETTINGS 項目中,將 Focus Type 變更為 Focus On Objects 後,再將場景中的膠囊物件放入 Focus Object 欄位中。

 

此時按下 Play 測試,角色們還不能注視著目標。

接著再選擇角色的預製物件,找到 HEAD LOOK AND FOCUS 項目後,將 Head Look Active 與 Focus On Idle 勾選後,再設定 Focus Distance 數值後,按下 Play 測試,角色就有注視物件的效果了。

 

如需使用觸發器 ( Trigger ) 來刪除NPC的話,可以 Population Engine 提供的 Destroyer 腳本元件,套用此元件,並使用現成的 Simple FX製作刪除 NPC 的效果。

此腳本是如果進入的物件中如果帶有 NPCEvents 元件,就將此進入的物件刪除。