【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_遊戲

今天我與大家分享射擊遊戲中常用的功能之一——舉槍瞄準。在遊戲中角色手持槍支,當玩家按下瞄準按鍵時,遊戲角色會舉起槍支進行瞄準。該功能細節相對比較多,所以我將會連載三篇文章進行分享:

(1)首篇文章:如何實現舉槍的動畫和代碼,還有鏡頭的縮放設置。

(2)次篇文章:如何製作射擊的準星。大家可以參考《【Unity3D實例-功能-瞄準】舉槍瞄準(二)準星製作》

(3)末篇文章:角色的頭部和槍支,如何跟隨準星移動,實現“指哪打哪”的功能。大家可以參考《【Unity3D實例-功能-瞄準】舉槍瞄準(三)角色頭部和槍跟隨準星》


目錄:

1、安裝Cinemachine插件

2、設置舉放槍動畫

3、創建和設置"普通"攝像機

4、創建和設置"瞄準"攝像機

5、實現舉槍瞄準的代碼

6、測試和運行



一、安裝Cinemachine插件

1、第一步我們需要安裝一個攝像機插件。我們先點擊Unity編輯器菜單欄中的“Window”選項,再從中選擇“Package Manager”來安裝我們需要的插件。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_遊戲開發_02

2、在Unity的Package Manager界面中,點擊“Packages”部分。會彈出一個下拉框,你可以選擇第一個選項是“Unity Registry”。接下來,在搜索框內輸入“Cinemachine”來查找插件。再點擊“install”按鈕進行安裝。(注意:如果你已經安裝過該插件,那麼顯示的按鈕會是“Remove”,而未安裝的用户則會看到“install”按鈕。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_03

二、設置舉放槍動畫

1、我這裏已經準備好了舉槍動畫和放下槍的動畫,我們選中所有的動畫,接着我們需要點擊右側菜單欄中的“Rig”頁籤,在“Animation Type”選項中,選擇“Humanoid”,然後點擊“Apply”應用。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_04

2、接着雙擊打開動畫機,我們需要把舉槍動畫和放下槍的動畫拖拉到動畫機上。選擇“Parameters”頁籤,點擊頁簽下的“+”號,創建一個Bool類型的觸發變量(我這裏命名為“aim”)

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_遊戲開發_05

3、我們需要為動畫創建過渡線。選中“Idle”(站立動畫)的節點與“RifileAimIn”(舉槍動畫)連接起來。把“RifileAimIn”(舉槍動畫)和“RifileAimOut”(放下槍動畫)連接上,反之,也連接起來,因為放下槍的過程中,也可以重新舉槍。最後把“RifileAimOut”(放下槍動畫)與“Idle”(站立動畫)之間連起來。

4、選中“Idle”(站立動畫)與“RifileAimIn”(舉槍動畫)之間的過渡線,隨後右側菜單中,點擊“Conditions”列表下的“+”號,添加“aim”變量,並設置為“true”來觸發舉槍動畫。再在把“Has Exit Time”的勾選去掉,因為舉槍動作可以隨時執行。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_遊戲_06

5、點擊選中“RifileAimIn”(舉槍動畫)和“RifileAimOut”(放下槍動畫)的過渡線,點擊“Conditions”列表下的“+”號,添加“aim”變量,並設置為“false”,而反過來的過渡線設置“aim”變量設置為“true”,讓其可以重新回到舉槍動畫。記得“Has Exit Time”的勾選去掉。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_07

6、點擊最後一條過渡線(“RifileAimOut”與“Idle”),確保“Has Exit Time”的勾選上即可,因為我們需要等待放下槍的動畫播放完整。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity_08

三、創建和設置"普通"攝像機

1、我們在“Unity”的“Hierarchy”頁籤中,選中我們的角色,點擊鼠標右鍵,在角色下創建一個空物體(我這裏命名為“Aim”,建議把空物體拖拉到人物的頸部位置)。再選中空物體,點擊鼠標右鍵,選擇“Cinemachine”,再點擊“Virtual Camera”創建虛擬攝像機(我命名為“BodyCamera”)。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity_09

2、接着我們來設置“Virtual Camera”虛擬攝像機。點擊虛擬攝像機,在左側屬性欄中,把空物體拖拉到“Follow”屬性。在“Body”類型下拉框中,選擇“3rd Person Follow”。隨後主要調整“Vertical FOV”縮放屬性和“Camera Distance”距離屬性。(只要把鏡頭調整到角色的背後,看起來舒服就行)

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_c#_10

四、創建和設置"瞄準"攝像機

1、我們再次選中角色下的空物體,再創建一個“Virtual Camera”虛擬攝像機(我這裏命名為“AimCamera”),在左側屬性欄中,同樣把空物體拖拉到“Follow”屬性。把最頂部激活相機的勾選去掉(因為我們在代碼中來控制這個瞄準攝像機)。“Prionty”優先級屬性調高一點(如果這個攝像機激活,讓這個攝像機優先展示)。同樣在“Body”類型中,選擇“3rd Person Follow”。主要調整“Vertical FOV”縮放屬性和“Camera Distance”距離屬性。(把鏡頭拉近,人物調整到瞄準時的位置,自己感覺舒服就行)。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_11

2、下拉瞄準攝像機的左側屬性欄,展開“Aim”屬性,並選擇“Aim”下拉框中的“POV”(鏡頭跟隨鼠標移動)。隨後調整“Vertical Axis”垂直度的範圍和移動速度,再調整“Horizontal Axis”水平度的範圍和移動速度即可。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_c#_12

3、最後還需要設置攝像機之間的切換速度。點擊選擇主攝像機“Main Camera”,找到“CinemachineBrain”,把“Default Blend”設置低一點,也就是鏡頭切換快一點(我這裏設置為“0.3”)。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_13

五、實現舉槍瞄準的代碼

1、創建一個 C# 腳本文件(我這裏命名為“PlayerController”)。並將它拖拉到角色上,進行掛載。

2、功能代碼

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

更多案例,原創來源於-谷宇博客:https://www.biguyu.top/home

已同步到公眾號:搜索”谷宇小站“,關注支持!


六、測試與運行

親測過程:點擊“Play Mode”運行案例後,成功實現點擊鼠標右鍵時,角色播放舉槍動畫,並且鏡頭切換到瞄準攝像機。鬆開鼠標右鍵後,恢復。

【Unity3D實例-功能-瞄準】舉槍瞄準(一)功能和鏡頭設置_unity3d_14