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 腳本,製作武器射擊的功能。 |