Unity 空戰遊戲

 

模擬空戰 VR

本文件說明製作 Unity 空戰射擊遊戲的重點步驟,遊戲將可支援專業飛行搖桿、Oculus Quest2 虛擬實境裝置。

 

遊戲企劃

玩家進入遊戲後,駕駛的戰機從海上的航空母艦彈射,場景採用無縫切換方式。

第一關為海上場景,對敵方的艦艇進行攻擊,空中僅有少量的戰機對玩家反擊。

第二關為陸地場景,敵方地面部隊與敵機將對玩家戰機帶來較猛烈的炮火攻擊。

第三關為峽谷場景,主要任務是擊毀敵方的雷達通訊設備,設計上是加分關卡。

玩家有數量限制,達到限制時遊戲結束,完成以上關卡後統計分數並顯示排名。

 

考量部份玩家對於飛行遊戲的操控可能不熟悉,遊戲玩法較為寬鬆的設計包括:

戰機將不會撞擊地面而受損,戰機低飛時無法接觸地面,並且限制爬升的高度。

戰機攻擊方式包含無限制的機槍與導向飛彈,當面對大量敵方攻擊可化解危機。

遊戲不是以模擬飛機真實操作為目標,而是以快節奏帶給玩家射擊的爽快感!

 

使用手冊

模擬空戰是使用 Unity 引擎開發的遊戲,無需安裝即可直接執行,教室中展示電腦桌面上已經放了虛擬空戰遊戲的資料夾,啟用此遊戲的步驟簡單,說明如下:

1、先將飛行搖桿的與電腦連接(使用搖桿上的 USB 線),此系統使用的搖桿是 THRUSTMASTER TCA SIDESTICK AIRBUS ED. 空中巴士限定版,無需安裝驅動程式。

2、電腦端開啟 Oculus 應用程式,然後將 Meta Quest 2 頭戴式虛擬實境裝置與電腦連接(使用 USB 對 Type-C 連接線),此步驟是讓電腦能夠用 Meta Quest 2 執行電腦 VR 遊戲,因為 Meta Quest 2 是 VR 既是一體機也可以支援電腦 VR 遊戲。

3、開啟桌面的遊戲資料夾,然後滑鼠雙擊遊戲的執行檔,即可啟用虛擬空戰 VR 遊戲。

 

遊戲開啟後應該可以透過轉動頭部控制遊戲的視角,如果沒有反應或視角固定,可能是 Oculus 應用程式尚未啟動或 Meta Quest 2 未啟動的關係,可先將電腦重新開機,然後執行以上步驟來解決問題。

進入遊戲後,按下任何按鍵開始遊戲,確認搖桿可以操作戰機。

遊戲關卡設有時間限制,戰機受敵機攻擊到達一定程度的損害時,都會讓遊戲結束。

注意!此資料夾的檔案僅供遊玩使用,若需要使用 Unity 修改遊戲請開啟模擬空戰的專案檔案。

 

在全新的電腦安裝遊戲

教室的電腦已經安裝了必要的驅動程式與相關軟體,若需要在全新的電腦安裝此遊戲,請參考以下步驟:

 

一、安裝 Oculus ADB 驅動程式

為了讓電腦辨識 Oculus Quest 頭戴式裝置,需要下載安裝 Oculus ADB Drivers 驅動程式 [ 網頁 ]

安裝 Oculus ADB Drivers 是將下載檔案解壓縮後在 Android_winusb.inf 按滑鼠右鍵執行 Install 安裝 。

安裝後電腦可存取 Meta Quest 儲存空間,例如將 360 影片放入 Quest 觀看或透過電腦抓取遊戲截圖。

此時若戴著 Meta Quest 將會看到以下的訊息:

確保 USB 連接線已插入頭戴式裝置以及電腦的 USB3 埠,電腦需要同時執行 Oculus 應用程式,

 

二、安裝 Oculus 應用程式

您可以使用 USB 連接線連結 Oculus Quest 2 裝置,原廠 Oculus Link 光纖連接線 提供長達 5 公尺的長度,適合遊戲使用售價 $79 美元,也可以使用原廠隨附的 1 公尺連接線或市售高品質 USB 3 傳輸線即可。

您需要安裝 Oculus 應用程式,安裝步驟如下

按下 Oculus Link 下方的「下載軟體」按鈕,開始安裝。

選擇有線或 Air Link 無線(需要 Wi-Fi 網路環境)的連結方式。

顯示此畫面表示 Oculus Link 設定完成,按下 關閉 按鈕。

 

戰機與航空母艦模型

玩家戰機將會從航空母艦起飛,對入侵我方領空的敵機進行反擊,需要準備航空母艦、戰機與敵機的模型。

此遊戲的專案包含 3 款不同塗裝的航空母艦,如果未來希望替換或修改模型,請在專案以檔案名稱搜尋。

檔案名稱:Drone_Carrier-blue

檔案名稱:Drone_Carrier-green

檔案名稱:Drone_Carrier-red

此遊戲的專案包含 3 款不同塗裝的戰機模型,未來希望替換或修改模型,同樣請在專案以檔案名稱搜尋。

玩家戰機模型 - 檔案名稱:Warthog_blue Variant

檔案名稱: Warthog_grey Variant

檔案名稱: Warthog_red Variant

 

戰機的設定參數

本章節說明玩家戰機的參數,戰機是以 OverCloud 提供的飛機為基礎,搭配 Hurricane VR 模組。

搜尋 OverCloudDemo 場景後開啟,選取 Flight Demo 下的 Plane 子物件,此為戰機的原始物件。

不過 OverCloud 提供的是二戰時期螺旋槳飛機,此遊戲僅使用它的基本架構與部份的腳本功能。

透過 Inspector 設定 Thrust推力、Force Mult 推力倍數,戰機的飛行速度是這兩個變數的相乘數值。

為了控制旋轉速度 Plane Rotate Speed 是增加的公開變數,以下是 Plane.cs 部份重點原始碼:

戰機的 pitch(俯仰)與 roll(翻滾)乘上 PlaneRotateSpeed 變數可微調操控性,參閱維基百科:

https://en.wikipedia.org/wiki/Aircraft_principal_axes

瞭解飛機的原始參數之後,說明 VR 遊戲中的戰機參數,以下標示的是模擬空戰 VR 遊戲的主要場景。

開啟 PlayScene1 場景,預設的攝影機在戰機駕駛艙的位置,模擬戰機飛行員的觀點。

畫面上 [ 確認回到選單 ] 的 UI 進入遊戲將會自動關閉,按下鍵盤 Esc 鍵時可回到遊戲主選單。

選取 Flight Demo 物件下的 Playe (1) 物件,此為虛擬空戰 VR 版本的戰機,下圖為調整後的參數。

 

此遊戲使用 Thrustmaster 圖馬斯特公司的 TCA Captain Pack Airbus Edition 飛行搖桿。

這是該公司首款獲得 Airbus 空中巴士官方授權的飛行相關遊戲配件,支援 Windows 系統。

採用人體工學複刻設計,與 Airbus A320 的側桿很相似,提供駕駛任何飛機所需的功能。

每個元件都採用複刻版設計,真實再現真品的形狀和顏色,元件各不相同卻格外逼真。

配備機械選取器開關,可以停用棘爪與推力反向器,從而靈活地駕駛任何類型的飛機。

配備 Thrustmaster 著名的 H.E.A.R.T (HallEffect AccuRate Technology) 系統,內建磁性感應器(側桿最高可支援 14 位解析度,節流閥弧座最高支援 16 位解析度),讓玩家能夠體驗到更逼真的操控感。

相容 Thrustmaster T.Flight Rudder Pedals (TFRP) 和 Thrustmaster Pendular Rudder (TPR) 方向舵系統(另售)。

模擬空戰 VR 遊戲使用搖桿控制飛行姿態,扳機發射機砲,其餘按鈕在目前版本尚未使用,若未來需要擴充功能,可以參閱 Unity 對應的輸入代碼,如下圖所示:

 

製作新遊戲關卡

此遊戲的目前版本提供 2 個關卡,若希望增加新的關卡(第三關)可參考以下說明

新關卡必要物件包括 OverCloud、Flight Demo、GAME_End 可從目前的場景複製貼上。

儲存此場景,執行 [ File > Build Settings ] 開啟 Build Settings 建置設定對話框。

按下 Add Open Scenes 按鈕將製作的第三關場景加入,玩家才能在遊戲中進入遊玩。

若需要快速測試新遊戲關卡,可先開啟 StartScene 場景。

選取 StartGameManager 物件後,透過 Inspector 編輯器在 Play Game Name 欄位輸入第三關的名稱。

進入遊戲的標題畫面後,即可快速進入設定的遊戲關卡。此外 Title Object 是模擬空戰的遊戲標題、Start Text 是按任何按鍵開始遊戲的文字,它們在開始時是隱藏的,戰機飛越上方後才會出現,可以自行替換素材。

透過 StartGameManager 物件的 StartGameManager.cs 腳本,可修改這些物件出現以及載入第一關的時間。

修改完成後,請使用專案再次執行發佈遊戲即可。

 

新關卡的敵入

遊戲關卡通常會出現多個相同類型的物件,例如稍後介紹的導彈發射器,如果每一個導彈發射器都從頭開始製作,將會相當費時而且不切實際,可以透過製作 Prefab 預製物件,製作場景時再將預製物件放在場景的適當位置。

請在 Project 專案視窗建立一個 Prefabs 資料夾,稍後只需要將製作完成的物件放入 Prefabs 資料夾,在 Hierarchy 階層視窗的物件名稱會顯示深藍色,即代表此物件已經轉成預製物件。

目前建立的新遊戲關卡若需要重新啟動遊戲的功能,請參考以下步驟:

建立一個空物件並命名為 GamePoint 物件,套用 GamePoints 腳本元件,用於控制關卡切換。

 

敵方導彈的製作

敵方的導彈攻擊將會使用 WARSHIPS - Drone Carrier 的航空母艦與導彈發射器模型。

視覺效果將使用 Unity 標準資源的 Afterburner、TyreBurnoutSmoke、Explosion 粒子效果。

 

敵方導彈 - 瞄準

1. 建立一個新場景,開啟 [ Assets > Drone_Carrier > Prefabs ] 資料夾,

本教學以 Drone_Carrier-red Variant 示範,可自行選擇一個航空母艦拖曳到 Hierarchy 視窗。

2. 選取 Drone_Carrier-red Variant 後右鍵執行 Unpack Prefab 將預製物件斷開,並展開物件:

選取 Drone_Carrier-red Variant > Drone_Carrier > Missil_Turret-A009 物件。

複製並重新命名為 Missil_Turret_Attack,再將各子物件重新命名為適當的名稱。

例如:Missil_Turret-X 與 Missil_Turret-Y、Missil_1、Missil_2、Missil_3、Missil_4

注意!稍後需要製作飛彈,並可便於快速調整位置,以上的物件請勿刪除!

 

3. 建立一個 Missil_Look.cs 腳本,提供導彈發射器的瞄準功能,程式碼如下:

4. 將 Missil_Look.cs 腳本套用到 Missil_Turret_Attack 物件,然後透過 Inspector 屬性編輯器下 Missil_Look (Script) 的 Rotate X 與 Rotate Y 欄位,將 Missil_Turret-X 與 Missil_Turret-Y 拖曳到對應的欄位。

 

5. 接著再套用 Sphere Collider 元件,勾選 Is Trigger 改觸發器,設定 Radius 調整觸發器的範圍。

說明:您可依需求調整瞄準對象的觸發範圍。

6. 新增一個 Sphere 球體物件,將物件的標籤修改為 Player 用於模擬玩家戰機。

為 Player 物件上新增 Rigidbody 剛體元件,並將 Use Gravity 取消,讓 Player 物件不受重力影響。

按下 Play 測試遊戲,移動 Player 物件的位置,確認飛彈發射器是否跟著旋轉,瞄準目標的功能完成!

 

敵方導彈 - 發射

1. 建立一個 Missil_Fire.cs 腳本,提供導彈發射的功能,程式碼請參考專案中的檔案。

注意!public Missil_Attack [ ] Missil_Number; 出現錯誤,這部份稍後透過新增腳本即可解決。

2. 將 Missil_Fire.cs 腳本套用到 Missil_Turret-Y 物件,再套用 Sphere Collider 碰撞器並將 Is Trigger 勾選成為觸發區,Radius 可設定範圍大小。

您可自行調整發射飛彈的觸發範圍,但需要小於瞄準範圍,否則會出現沒有瞄準就發射導彈的情況!

3. 透過 Inspector 編輯器 Missil_Fire (Script) 腳本元件的 Missile Speed 數值,調整到 100,

Fire Time 為導彈發射的間隔,可以稍後再調整。

 

敵方導彈 - 追蹤

1. 建立一個 Missil_Attack.cs 腳本,提供導彈追蹤玩家的功能,程式碼如下:

2. 點選 Missil_1 並將 Missil_Attack 腳本元件套用到物件。

開啟 [ Assets > Standard Assets > ParticleSystems > Prefabs ] 資料夾。

將 Afterburner 與 Explosion 粒子物效拖曳到 Missil_1 底下成為子物件。

 

接著再將 TyreBurnoutSmoke 拖曳到 Afterburner 底下成為子物件並且調整到適當的位置與角度即可。

 

3.看到 Inspector 編輯器下的 Missil_Attack (Script) 腳本元件,將 Afterburner 與 Explosion 拖曳到對應欄位中並將 Afterburner 與 Explosion 物件關閉 (預設為關閉狀態)。

 

4.在 Missil_1 物件上套用 Capsule Collider 碰撞器,將 Is Trigger 勾選成為觸發區,將 Radius 與 Height 調整到適當的範圍大小,並修改 Dierction 為 Z-Axis。(可依需求自行調整爆炸的觸發範圍)

 

5.將 Missil_1 複製出三個出來,並利用原本的 Missil_2、Missil_3、Missil_4 三個飛彈座標位置進行複製貼上將複製出來設定好的飛彈調整到相對位置上,

接下來可將原本的 Missil_2、Missil_3、Missil_4 飛彈刪除,並將複製出來的飛彈重新命名為 Missil_2、Missil_3、Missil_4 完成替換原本的飛彈。

 

6. 選取 Missil_Turret-Y 後,在 Inspector 編輯器下 Missil_Fire (Script) 的 Missll_Number 接著再將 Missil_1、Missil_2、Missil_3、Missil_4 四個飛彈拖曳到欄位。

將製作完成的 Missil_Turret_Attack 導彈發射器拖曳到剛建立的 Prefabs 資料夾,轉成為預製物件。

現在已經完成敵方導彈的功能,當您製作新場景時,即可將導彈發射器預製物件放在場景上攻擊玩家!