【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_遊戲開發

我們在遊戲中,經常看到遊戲的角色在面對敵人時都會拿出自己心愛的武器。今天,我們就一起來探討一下,在射擊遊戲中角色拔槍的功能,它到底是如何實現的。避免文章篇幅冗長,關於拔槍的案例我將會連載三篇文章進行分享。

(1)首篇文章:如何實現動態創建武器和角色拔槍的動畫。

(2)次篇文章:如何把角色“上身動畫”和“下身動畫”分開,讓角色上身在播放其它動畫(如:拔槍,射擊,換彈等)時,下身怎樣可以保持移動動畫的播放。

(3)末篇文章:怎樣使用IK,使角色持槍的雙手更加貼合武器,顯得更加平滑和真實。


目錄:

1.創建動畫器

2.設置拔槍動畫

3.為角色手部設置掛載點

4.編寫動態創建武器的代碼

5.測試和運行



一.創建動畫器

在 Unity 的 “Project” 窗口中,點擊鼠標右鍵菜單,然後選中“Create”,點擊“Animator Controller”。創建一個 Animator 的動畫組件,並且把組件拖拉到角色上進行綁定。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_02

二.設置拔槍動畫

1.第一步我們選中“拔槍動畫”,然後點擊右側面板中的“Rig”頁籤,接着我們把選項“Animation Type”的值,切換成“Humanoid”,最後點擊“Apply”應用按鈕即可。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_unity_03

2.第二步打開角色動畫器,先把“拔槍動畫”拖拉到動畫器上。然後點擊左側菜單的新增變量的按鈕“+”號,創建一個Trigger類型的觸發變量(我這裏命名為“grab”)。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_04

3.第三步我們需要創建過渡線。把“Any State”(任何狀態下)的節點與“GrabGun”(拔槍動畫)連接起來,然後再把“GrabGun”(拔槍動畫)和“Idle”(站立動畫)也連接上。

4.第四步選中“Any State”(任何狀態下)的節點與“GrabGun”(拔槍動畫)之間的過渡線,隨後右側菜單中,點擊“Conditions”列表下的“+”號,添加“grab”變量來觸發拔槍動畫。最後記得把“Has Exit Time”的勾選去掉,因為拔槍動作可以隨時發生。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_遊戲_05

5.第五步選中“GrabGun”(拔槍動畫)和“Idle”(站立動畫)之間的過渡線,這裏需要把“Has Exit Time”的選項勾選上,因為我們需要等待拔槍動畫播放完畢。然後點擊“Setting”,把“Transition Duratior”的過渡時間設置1秒,可以讓拔槍動畫播放完後,更加平滑地過渡到站立動畫。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_06

三.為角色手部設置掛載點

1.首先點擊角色對象,我們需要找到角色右手的骨絡模型的位置,然後我們需要在右手的位置下創建一個空對象(該空對象非常重要,在文章末篇我將會分享IK的使用,那時也會用上它),接着我們來到場景中,把空對象移到角色右手上。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_07

四.編寫動態創建武器的代碼

1.在 "Assets" 文件夾中新建一個名為 "Scripts" 的文件夾(你可以根據自己的喜好來命名),然後在該文件夾裏創建一個新的 C# 腳本文件。接着將它拖拉到角色上。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_08

2.編寫動態創建武器的代碼

代碼、模型和動畫都已經上傳到我的個人博客了,大家可以自行下載。

原創來源於-谷宇博客:https://www.biguyu.top/home


3.回到Unity,點擊選中角色對象,然後把角色右手下的空物體和武器模型的預製體拖拉到角色腳本的“Right Hand Position”變量和“Weapon Prefab”變量上,為其賦值即可。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_遊戲開發_09

五.測試與運行

親測過程:進入 Play Mode 進行測試。玩家按下拔槍鍵(我這裏設置為“空格”鍵),角色平滑過渡到“GrabGun”(拔槍動畫)。動畫播放完成後,角色也自然回到“Idle”站立動畫。測試過程中,角色沒有出現卡頓或不連貫的現象。關於角色手部位置不貼合武器的現象,現在先不用管。在末篇文章《【Unity3D實例-功能-拔槍】角色拔槍(三)IK的使用-緊貼武器》。

【Unity3D實例-功能-拔槍】角色拔槍(一)動態創建武器_c#_10