RIFLE Basic - Mocap Animation Pack 教學

RIFLE Basic - Mocap Animation Pack 是一套支援 Unity 的步槍動作資源,收錄超過 123 個動作捕捉的角色動作,包含 Root Motion (RM) 與 In-Place (IPC) 版本。

檔案大小 = 208.8 MB / 使用版本 = V2.7A2 / Unity 版本 = 2017.1.1 以上

Split Jumps. Take-Offs, In-Air Loops, Landings.

注意!Rifle 武器附加於 "RightHandMiddle1" 手指骨骼,所有的動畫都需要使用武器。

快速連結 [ 增加跳躍動作 | 增加射擊動作 | 增加受傷動作 ]

從 Asset Store 資源商店搜尋 RIFLE Basic - Mocap Animation Pack 下載到專案。

匯入 RIFLE Basic - Mocap Animation Pack 資源包。

開啟 [ Rifle_27A2_Basic > MotusMan ] 資料夾的 Demo 場景,按下 Play 測試遊戲。

場景的 MotusMan_v55 角色將會展示 RIFLE Basic - Mocap Animation Pack 部份動作。

將此場景的 MotusMan_v55 複製到剪貼簿,建立新場景,然後將將角色貼上在原點位置。

將玩家角色重新命名為 "Player" 按下 Play 測試遊戲,角色的動作與 Demo 場景相同。

 

稍後的操作將此角色修改為可提供玩家操作,包括 移動、跳躍、射擊、裝填彈藥 … 等。

選取 Player 玩家角色,套用 Rigidbody 剛體元件,勾選 Freeze Rotation XYZ 鎖定物理轉動。

套用 Capsule Collider 膠囊碰撞器,調整中心點、高度與半徑。以此角色為例可參考以下設定:

Center Y = 0.9 / Radius = 0.36 / Height = 1.8 注意!動作位置請建立鎖定,重覆播放後會移位。

 

替換動作

建立 Animator Controller 動畫控制器並命名為 Player Animator Controller 用於管理此角色動作。

將 Player Animator Controller 動畫控制器套用到 Player 玩家角色。

目前動畫控制器沒有任何動作,按下 Play 測試時,將會看到玩家角色出游泳般的姿勢。

滑鼠雙擊 Player Animator Controller 動畫控制器開啟編輯視窗。

滑鼠右鍵 Create State > From New Blend Tree 建立動作混合樹。

剛建立的混合樹,重新命名為 Locomotion 用於控制角色的移動。

滑鼠點擊 Parameters 設定動畫參數,先將預設的 Blend 使用滑鼠雙擊改為 Speed 用於移動速度。

按下 + 可新增參數。

新增 Turn (Float) 參數,用於控制轉向的動作。

混合樹的預設是 1D 混合型態,改為 2D Freeform Directional 混合型態,讓角色可以前後左右移動。

修改參數 Parameters = Turn / Speed 然後在下方 Motion 按 + 新增動作欄位。

開啟 [ Rifle_27A2_Basic > Animation ] 資料夾,將 20-W2_Stand_Aim_Idle_v2 原地瞄準待機動作拖曳到動作欄位。

選取場景的 Player 玩家角色,使用 Player Animator Controller 替換原本的動畫控制器,然後按下 Play 測試遊戲。

補充:原地待機動作使用 W2_Stand_Relaxed_Idle_IPC 也不錯!

繼續增加動作欄位,並調整對應參數的位置。

 

[ Animation > Root_Motion ] 資料夾的是 Root Motion 版的走路、跑步、衝刺動作,包含移動資訊。

[ Animation > IPC ] 資料夾的是原地動作,包括走路、跑步、跳躍… 等,這些動作不包含移動資訊。

稍後使用的走路動作。

稍後使用的跑步動作。

待機與前後移動的部份完成後,製作左右移動的部份。

請參考下圖所示,玩家角色待機與移動的動作設定。

 

按下 Play 測試遊戲,選取 Locomotion 混合樹,然後透過 Inspector 的紅點控制角色(類似搖桿)。

 

建立 PlayerController.cs 腳本控制角色的動作,套用到 Player 玩家角色,程式碼如下:

此腳本使用 Rigidbody 提供角色移動功能,按下 Shift 時角色產生較快的動作與移動速度。

增加跳躍動作

使用 Rigidbody 提供角色跳躍的功能,需要判斷玩家角色是否在地面,以避免角色跳躍後尚未落地可以重複跳躍的問題。

按 + 增加 Jump ( Trigger ) 參數。

W2_Stand_Relaxed_Jump_Start_IPC 開始跳躍

W2_Stand_Relaxed_Jump_Air_IPC 跳躍後在空中

W2_Stand_Relaxed_Jump_End_IPC 跳躍落地

連結跳躍的動作

選取從 Locomotion 混合樹到 Jump 動作的箭頭,將 Has Exit TIme 取消勾選,然後設定條件 Jump 觸發動作轉換。

 

PlayerController.cs 增加跳躍功能。

開啟專案設定的 Input Manager 將可看到預設的跳躍使用鍵盤 space 空白鍵與 joystick button 3 搖桿按鈕。

增加射擊動作

待機(放鬆)

W2_Stand_Relaxed_Idle 或 W2_Stand_Relaxed_Idle_IPC

待機(瞄準)

W2_Stand_Relaxed_Idle 或 W2_Stand_Relaxed_Idle_IPC

開槍射擊

W2_Stand_Fire_Single /

裝填彈藥

W2_Stand_Relaxed_Reload

將以上動作拖曳到動畫控制器,並且新增參數 切換到 Parameters 按下 + 新增 2 個參數:

Aim(Bool)

Fire(Trigger)

Reload(Trigger) ★

選取待機的動作狀態 Make Transition 到瞄準動作狀態

選取瞄準的動作狀態 Make Transition 到待機動作狀態

設定動作轉變條件

選取待機到瞄準的箭頭,透過 Inspector 取消 Has Exit TIme 設定 Aim = true

選取瞄準到待機的箭頭,透過 Inspector 取消 Has Exit TIme 設定 Aim = false

選取瞄準到射擊的箭頭,透過 Inspector 取消 Has Exit TIme 設定 Fire

取消 Has Exit Time 的話,將不等候目前的動作完成,直接轉變動作!

建立一個 C# 腳本,命名為 PlayerController 並套用到玩家角色。

 

製作子彈的預製物件

建立空物件並命名為 "Bullet" ,新增球體為子物件,調整至適當大小,新增 Bullet.cs 腳本並套用到 Bullet 物件。

 

製作發射子彈的功能

建立 Weapon-assault-rifle 下的空物件,重新命名為 "Muzzle" 槍口,調整到步槍的槍口位置。

建立 WeaponController.cs 腳本,製作武器射擊的功能。