1. 程式人生 > 實用技巧 >Unity小遊戲教程系列 | 建立小型太空射擊遊戲(4)

Unity小遊戲教程系列 | 建立小型太空射擊遊戲(4)

本期我們繼續為大家進行小型太空射擊遊戲的後續教程

本篇教程重點

8.武裝大炮

9.將碎片放入太空

10.全部整合到一起

小型太空射擊遊戲教程篇幅較長,分為四篇,本篇為第四篇,有小夥伴沒有看【小型太空射擊遊戲(三)】可以先去看一下

歡迎加入我們的Unity問題交流群:1146128932

8.武裝大炮

雖然四處飛行很有趣,但大多數玩家都渴望發射幾十個光子魚雷!

提供了一個指令碼來幫助您滿足這種渴望。

在層次結構中選擇Spaceship,然後在“ Inspector”視窗中單擊“ Add Component”按鈕。單擊Scripts / Ion Cannon.

您會注意到Audio Source和指令碼已自動新增到GameObject中。

在這裡插入圖片描述
一些指令碼需要元件。如果在GameObject上找不到元件,則會自動新增它們。

為了使您的物件播放聲音,您需要音訊源和音訊剪輯。音訊源可以附加到任何GameObject,而音訊剪輯只是音訊檔案。

將拍攝聲音從“ Project”視窗中的“ Sounds”資料夾中拖到“ Fire Sound”欄位中。

在這裡插入圖片描述
您會注意到,“ Ion Cannon ”指令碼具有“專案符號”欄位。您的工作是建立專案符號物件。如果您不是藝術家,請不要擔心-一個簡單的球體就足夠了。

單擊層次結構中的建立按鈕。從選單中選擇3D物件,然後選擇Sphere.
在這裡插入圖片描述
在層次結構中選擇 Sphere,然後使用檢查器將“ Scale”設定為(X:0.47,Y:0.47,Z:0.47)。再次在層次結構中選擇Sphere,並將其命名為Bullet。

由於您的子彈將在整個場景中移動,因此它也需要加入物理引擎。你還記得你需要做什麼嗎?旋轉一下,如果卡住了,請檢查下面的擾流板。

從層次結構中選擇專案符號,然後單擊檢查器中的“ 新增元件” 按鈕。選擇“ 物理/剛體”以新增“剛體”元件。

子彈將需要速度執行,所以一定要確保是運動是選中。此外,確保利用重力是選中。

即使子彈飛離屏幕後,子彈也將繼續飛行,就像您的飛船最初那樣。將Bullet指令碼從“專案”視窗拖動到Bullet GameObject上。現在,當子彈飛離螢幕時,它將自動被銷燬。

最後,將Bullet物件拖到“ 專案”視窗的Prefab資料夾中。這將建立專案符號的預製,從而使您可以使用指令碼建立大量專案符號。

現在,您已將子彈建立為Prefab,請從“ 層次結構”中刪除該子彈的例項。

再次選擇您的太空飛船,然後使用檢查器將Bullet Prefab 新增到Bullet欄位。檢查器應如下所示:

在這裡插入圖片描述
最後,天空背景有些不合適,您會期望太空飛船在太空的黑色空隙中飛行,不是嗎?

在層次結構中選擇“ Main Camera ”,然後使用檢查器將“Clear Flags ”設定為“ Solid Color ”,將“ Background Color”設定為 black.

在這裡插入圖片描述
儲存您的工作,運行遊戲,然後按空格鍵,用離子大炮開炸!

在這裡插入圖片描述

9.將碎片放入太空

到目前為止,您有一艘可以射擊的船,但是如果有什麼東西可以射擊的話,那會更有趣。現在是時候向混合物中新增一些小行星了。

在下載的檔案中找到rock_d_05.obj檔案,並將其拖到“專案”視窗中的“ Models”資料夾中。

右鍵單擊rock_d_05.obj並將其重新命名為Asteroid。

在這裡插入圖片描述

該檔案僅包含有關模型本身的資訊,它不包含任何動畫。

將 Asteroid模型拖到“ Scene view”中以建立其例項。您會看到小行星當前為純白色。

在這裡插入圖片描述

儘管您可以說它是雪白彗星的碎片,但您應該學習如何構造模型……除非您想從事製作以雪為主題的遊戲的職業

展開Asteroid GameObject並選擇其名為rockLP001的子物件。在檢查器中,您將看到此子GameObject附加了一個Mesh Renderer元件。渲染器將物件繪製到螢幕上,但是需要一些幫助才能做到這一點-這就是材質發揮作用的地方。

材料決定了物件的外觀,例如,棉襯衫與石膏牆的外觀將有很大不同。

Unity通過使用每種材質封裝Shader來實現此目的。

你問什麼是Shader?這是一個簡單的程式,以類似C的語言編寫,並在GPU上執行。著色器可以足夠簡單以在立方體上渲染紋理,也可以足夠複雜以模擬水。

Unity提供了許多不同的著色器。例如,您可以使用它們渲染天空盒,或使物件看起來是半透明的。

在“專案”視窗中開啟“ Materials”資料夾,然後單擊“ Create ”按鈕。從下拉列表中,選擇Material並將其命名為Asteroid。現在,在“Inspector ”視窗中,您將看到材料的可用屬性。

在這裡插入圖片描述
1:著色器選項使您可以從許多預打包的著色器之一中進行選擇。預設的標準著色器具有極大的靈活性,因此請選擇它。
2: 撞擊小行星時,您需要將其淡出,因此請將“ Rendering Mode”設定為“Fade”。
3:該 Albedo屬性包含實際的質感。您可以通過提供顏色對其進行著色。

將flint_like_rock_4787影象從“ 專案”視窗中的“ Textures ”資料夾拖動到Albedo屬性中:
在這裡插入圖片描述

4:檢視“檢查器”視窗底部的Asteroid材質預覽,您會注意到該材質看起來有點過於光滑,就像它已經打磨過一樣。(如果看不到材質預覽,請嘗試像這樣從“檢查器”的底部向上拖動Asteroid標題欄):

在這裡插入圖片描述
在這裡插入圖片描述
在Metallic屬性下,您將看到兩個滑塊。第一個滑塊確定材料的金屬外觀,而另一個滑塊確定紋理的粗糙度。

現在,將“ Metallic”滑塊設定為0.219

5:將“ Smoothness ”滑塊設定為0.149。您的材料現在應如下所示:

在這裡插入圖片描述
所有材料配置完畢後,您現在需要將其新增到小行星中。將您的Asteroid材質從“專案”視窗拖動到“ Scene view.”中的Asteroid GameObject
在這裡插入圖片描述
太棒了!您有一顆小行星準備引起很多麻煩。但是首先,您需要為其新增一些行為。

拖動Debris從指令碼Project window在Scripts folder中的小行星。

碎片指令碼會自動將球體碰撞器,剛體和音訊源新增到小行星。現在設定所有必需的屬性。

在這裡插入圖片描述
1:將Sphere Collider的中心設定為(X:0.01,Y:-0.09,Z:0.89)。
2:將Radius 設定為1.49。
3:選中是 Trigger複選框。
4:對於剛體,請取消選中“ Use Gravity ”複選框。
5:選中是Kinematic 複選框。
6:對於Debris script,將“ Min Speed”設定為15。
7:將 Max Speed設定為30。
8:將explosion 聲音檔案從“Sounds”資料夾拖到“Explosion Sound”欄位。
9:對於Asteroid GameObject的變換,將Scale設定為(X:3.02,Y:3.02,Z:3.02)。
10:新增Debris元件還添加了必需的“ Renderer Fade”元件。當子彈與小行星碰撞時,小行11 星應逐漸消失而不是從螢幕上消失。該元件僅需要一個淡入淡出時間,因此請將“ Fade Time”設定為0.5。

隨著小行星從螢幕上移開,它們應該像宇宙飛船一樣包裹。

從“專案”視窗中的“指令碼”資料夾中,將ScreenWrap指令碼拖到Asteroid上。就像使用太空飛船一樣,您需要使用正確的渲染器配置螢幕包裹。

小行星有一個名為rockLP001的子游戲物件。將此子GameObject拖到Asteroid GameObject 的檢查器中的“ Screen Wrap ”元件的“ 渲染器”屬性。
在這裡插入圖片描述
最後,將小行星從“層次結構”拖到“專案”視窗中的Prefab資料夾。當提示您建立預製時,單擊原始預製。現在您已經完成了建立Asteroid Prefab的工作,從層次結構中刪除Asteroid例項。

您需要的最後一件事是所有小行星的生成點。單擊層次結構中的建立按鈕,然後選擇建立空。命名您的產卵點Debris.。

您將希望此生成點與播放器在同一平面上。否則,玩家將在碎片上方或下方飛行。用作參考的良好GameObject是missile_R_0,因為它位於模型的中心。

拖動碎片遊戲物體,並使其成為一個孩子的missile_R_0。然後,碎片的變換座標將相對於其父級GameObject。

要匹配父物件的座標,請將“碎片”位置設定為X:0,Y:0,Z:0)。通過這個小技巧,您可以確定太空飛船和碎片在同一平面上。

接下來,將“ Debris ”移動到其原來所在的“層次結構”檢視的底部。

在這裡插入圖片描述
向右移動 Debris遊戲物件7.5點。如果您沒有設法使它們完全相同,則其新位置應為(X:20.0,Y:1.72,Z:7.06)。
在這裡插入圖片描述
10.全部整合在一起

現在您已經配置了飛船和小行星,接下來需要將所有元素組合在一起並建立一個簡單的遊戲。

單擊層次結構中的Create按鈕,然後選擇Create Empty。在Inspector中,單擊新GameObject的名稱,並將其命名為GameManager。

隨著GameManager的層次選擇,點選新增GameManager,選擇Scripts,然後選擇遊戲管理器。

您會看到該操作也添加了音訊源。此外,GameManager元件具有幾個需要設定的欄位,這些欄位將用於生成小行星。

從“Debris ”欄位開始。確保在“層次結構”中選擇了GameManager,然後將Asteroid Prefab拖動到“ Debris ”欄位中。

那你在這裡做什麼?該GameManager負責產卵小行星。它使用“ 碎片”欄位來確定要生成的物件。您告訴它使用Asteroid Prefab。

接下來,仍然在GameManager上:

1:將“ Min Time”設定為2,將“ Max Time ”設定為5。這告訴指令碼它應該多快生成小行星。
2:將“ Total Items on Screen ”設定為5。這將小行星的數量限制為5,這樣玩家就不會感到不知所措。
3:將“ Debris GameObject”從“層次結構”拖到“ 螢幕碎片”欄位。這指定GameManager應該在碎片GameObject上生成小行星。

該遊戲管理器元件應如下所示:

在這裡插入圖片描述
最後,在Audio Source component,新增background-music 的AudioClip領域,並確保檢查 loop 複選框。
在這裡插入圖片描述
執行您的遊戲,並檢視一切。
在這裡插入圖片描述
歡迎加入我們的Unity問題交流群:1146128932

恭喜,您已經在Unity中建立了自己的第一款遊戲!

在以後的教程中,您將瞭解Unity的各個小節,這些小節實際上可以使您精通此遊戲。您還將學習如何編寫自己的指令碼以利用Unity的靈活API。