Toon Soldier 教學

Toon Soldier 是一套士兵角色模型資源,並提供完整的角色動作,已推出 Unity 與 Unreal 遊戲引擎 2 種不同版本。

這次的 Toon Soldier 教學是 Unity Mecanim 版本。首先從 Asset Store 資源商店搜尋 Toon Soldiers 下載到專案。

匯入 Toon Soldiers 資源包,另外可一併下載免費的 Unity Particle Pack 匯入專案,用於製作爆炸效果。

將步兵的預製物件拖曳到場景,重新命名為 "Player" ,按下 Play 測試,因為目前的動作尚未設定將會呈現右圖的姿勢。

建立 Animator Controller 動畫控制器,然後重新命名為 Player Animator Controller 用於管理玩家角色的動作。

滑鼠雙擊 Player Animator Controller 動畫控制器,開啟編輯視窗,滑鼠右鍵 Create State > Empty 建立動作狀態。

新增的 New State 動作狀態方塊,黃色代表第一個動作,稍後加入的動作狀態方塊將是灰色。

滑鼠雙擊 New State 動作狀態方塊,透過 Inspector 可將名稱修改為 Idle 待機動作,並指定需要的動作。

 

使用混合樹可以製作更真實的角色動作。

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

 

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

 

開啟 [ ToonS_oldiers > ToonSoldiers_2 > animation > Infantry ] 資料夾,待機、射擊、投手榴彈等動作。

放在 root_motion 資料夾的是 Root Motion 版的走路、跑步、衝刺動作,這些檔名包含 RM 的動作包含角色的移動資訊。

放在 movement 資料夾的是原地動作,包括走路、跑步、跳躍…等,這些動作不包含移動資訊。

 

從 [ Toon_Soldiers > ToonSoldiers_2 > animation > Infantry > movement ] 資料夾尋找適當動作。

從 Animator 視窗將會出現增加的待機、前後移動動作。

按下 Play 測試遊戲,調整 Locomotion 混合樹的 Speed 數值,觀察角色的動作變化。

前後移動的部份完成後,接著增加玩家角色的左右移動功能。

 

選取 Player 玩家角色,套用 Rigidbody 剛體元件,勾選 Freeze Rotation XYZ 。★

套用膠囊碰撞器,調整中心點、高度與半徑。★

 

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

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

 

增加角色的跳躍動作

使用 Rigidbody 提供角色跳躍的功能,需要判斷玩家是否在地面,避免空中跳躍的問題。

使用 Toon Soldiers 提供的跳躍動作。

增加 Jump ( Trigger ) 參數。

PlayerController.cs 增加跳躍功能。

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

 

製作子彈的預製物件

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

 

製作發射子彈的功能

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

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

 

製作武器瞄準功能

使用動畫切割方式,製作步兵瞄準的姿勢,動畫控制器新增 Aim 瞄準與 Shoot 射擊動作,新增參數與轉換條件。

 

玩家按下滑鼠右鍵將切換為第一人稱視角,並且畫面出現瞄準鏡的準星圖片,放開滑鼠右鍵時回到第三人稱視角。

建立 2 個空物件用於設定第一人稱與第三人稱觀點的攝影機位置,移到適當的位置,注意場景中只有一部攝影機。

新增一個 AimController.cs 腳本,套用到玩家角色,程式碼如下:

★Hierarchy ★Inspector~Variable.

 

WeaponRaycast.cs 腳本,瞄準的目標出現外框效果。

 

 

offline ↓↓↓

bullet NU

 

FBX php