共計 4106 個字符,預計需要花費 11 分鐘才能閱讀完成。
終于到了真正動手做游戲的時刻,在這一節里,我會帶你從頭開始將我們的太空保衛者按照設計方案制作出來。這一節里的內容會非常的多,一遍消化不了,可以多讀幾遍。別著急,慢慢來。
首先,我們要準備好游戲中需要用到的所有素材。
下方是一張素材的清單:
精靈:
– 太空背景圖
– 游戲的標題,這里直接用文本
– 開始按鈕
– 戰機
– 敵機
– 敵機爆炸動畫
– 子彈
– 游戲結束
– 用于記分的數字
– 遮罩層(用于在游戲結束時顯示)
聲音:
– 背景音樂
– 發射子彈的聲音
– 敵機爆炸的聲音
按照清單,我們先將所有的素材都導入到游戲中。
準備素材
大部分的精靈使用彩色飛機大戰中提供的素材。
使用積木小 Y 中的白色數字以及基礎文本。
使用幾何圖形中的正方形作為遮罩層。
使用飛機大戰中的子彈射擊和敵機爆炸 1 音效。
最后,背景音效我們選用經典飛機大戰中的 bgm。
所有的素材選中后,點擊 導入 按鈕,將所有的素材導入到游戲中。
導入后,應該是這個樣子。
當前我們其實還缺少一個素材,就是敵機的爆炸動畫,因為爆炸動畫是針對敵機的,所以這里將爆炸動畫作為一個敵機的造型,添加到敵機的素材中。
在資源管理中選中敵機,然后點擊 編輯造型 按鈕。
選擇從素材庫里添加。
選擇彩色飛機大戰中的紅色敵機 - 動畫,然后點擊導入按鈕。
這樣敵機就包含兩個造型了,一個是正常狀態,一個是爆炸時的動畫。
到此游戲中需要的所有素材都準備完畢,讓我們開始下一步:劃分場景。
劃分場景
上一節的設計方案中提到,游戲分為兩個場景:開始場景和游戲場景,開始場景只負責顯示游戲的名字和開始按鈕,游戲場景則負責處理游戲中的所有內容。
游戲中默認會包含一個場景,讓我們再創建一個場景。
點擊場景區中的 新建場景 按鈕。
場景區中會增加一個新的場景,默認名字為場景 2,我們將其重命名為 開始場景。
接著,我們點擊開始場景右上角的三個點,然后選擇 設置為主場景。
你會發現,在 開始場景 的左上角多了一個小房子的圖標,這個圖標標識了當前的場景為主場景。所謂的主場景是指進入游戲后首先顯示的場景,因為進入游戲后我們首先展示開始場景,所以,這里將開始場景設置為主場景。
我們將場景 1 重新命名為 游戲場景,這樣兩個場景就劃分好了。
下面,我們先從開始場景著手,布置一下界面。
布置界面
首先,我們將默認的藍色背景替換成太空背景,然后將基礎文字和開始素材直接拖拽到編輯區中。
布置一下位置,然后調整一下基礎文字的屬性,這里我們通過調整了字體的大小,粗細和顏色讓它看起來更像一個標題。
接著,我們實現一下這個場景中僅有的一個邏輯:點擊 開始 按鈕,進入到游戲場景。
選擇 開始_1,然后在積木區點擊 添加事件 按鈕,選擇 當精靈被點擊時。
接著,添加控制中的 切換場景到游戲場景 積木塊。
看起來是這樣,當我們點擊開始按鈕后,就會切換到游戲場景了。
你可以點擊 預覽場景,然后點擊開始按鈕,看一下場景是否能夠切換到游戲場景。
接下來,我們要制作游戲場景了,還是先從布置場景開始。
如圖,層級管理中的紅色方框內就是需要的所有素材了。背景,戰機,敵機,藍色子彈都是獨立的部分,接下來我們會將正方形,開始,GAMEOVER 三個圖層組合起來,創建一個游戲結束頁面。
依次選中 GAMEOVER,開始,正方形三個圖層(Windows 系統按住 Ctrl 鍵點選,Mac 系統按住 Command 鍵點選),然后點擊這三個圖層任意右側的小按鈕,選擇將選中圖層組成容器。
在層級管理中會生成一個 容器 -1,然后剛才的三個圖層出現在容器中,請注意,在素材管理區中也會出現一個 容器 -1的素材。
我們可以直接在編輯區中對容器中的各個圖層進行大小和位置的調整,調整后的游戲結束界面看上去是這樣,將正方形設置為黑色半透明的遮罩層,然后在上面顯示 GAME OVER,以及重新開始游戲按鈕。
最后,我們把容器重新起個名字叫 游戲結束,在資源管理器中,右鍵點擊容器 -1,選擇重命名,然后設置名字為游戲結束。
層級管理中的容器名字會自動更新為游戲結束。
游戲結束界面只有在游戲結束的時候才會顯示,正常游戲時不應該顯示出來,所以,我們要將其隱藏起來,等到游戲結束時,再讓它顯示。
在層級管理中,右鍵點擊游戲結束,然后選擇 隱藏。
你會發現整個游戲結束容器變成灰色了,而且在編輯區中也不見了。它被隱藏起來了,我們會在需要的時候再讓它顯示。
接下來,我們在編輯區中調整一下戰機,敵機和子彈的大小,然后將得分放在左上角的位置。這樣,游戲場景就布置好了。
到現在為止,我們已經完成了游戲中的所有的可見的部分,接下來我們就要逐一實現那些不可見的部分 —邏輯。
游戲邏輯
在上一節中我們分析了游戲場景中主要的幾個部分:戰機,敵機,子彈,得分。接下來,我們會一個一個的進行實現。
首先,我們先要配置游戲中需要用到的 變量 和通知。
如圖,我們新建了兩個全局變量,一個用于記錄得分,一個用于記錄游戲是否結束,0 表示沒有結束,1 表示游戲結束。新建了一個敵機爆炸的通知,每當敵機發生爆炸時就會發送這個通知,得分數字每當接收到這個通知時,就會將得分加一。
接著,我們先從戰機開始。戰機需要添加下面的邏輯:
– 當手指點擊戰機拖拽時要做出響應,戰機位置跟隨手指移動。
– 戰機碰撞到敵機時,則游戲結束,顯示游戲結束提示。
選中戰機,為戰機添加如下的積木塊。
積木塊的邏輯清晰明了,在此就不再做多余的解釋了。
接著,子彈需要處理以下的邏輯:
– 游戲開始后就不停的克隆子彈。
– 當子彈被克隆出來后,將其位置設置在戰機的位置。
– 當子彈碰撞到敵機時,子彈應該被銷毀。
選中藍色子彈,為其添加如下的積木塊。
這里注意最上方的積木塊 當自己移出全部邊緣,在這里我們做了刪除處理,即當子彈飛出屏幕后,將其刪除。因為,在游戲中有些子彈沒有擊中敵機,會直接向上飛出屏幕,如果我們不將其刪除的話,它們會繼續留在游戲中,雖然我們看不見。當這些無用的子彈累積的越來越多的時候,游戲可能就會變得卡頓。所以,對于這些飛出屏幕的無用的子彈,我們直接做刪除處理。
接著,我們再處理敵機的邏輯。
– 游戲開始后就要每間隔一定的時間克隆敵機。
– 當敵機被克隆出來后,將位置設置為屏幕頂端的隨機位置。
– 當子彈碰撞到敵機時,敵機銷毀,并發送一個敵機銷毀事件。
選中敵機為其添加如下的積木塊。
這里需要特別注意以下用紅框圈出的積木塊設置自己不參與碰撞,這塊積木的作用是讓敵機不再參與碰撞,因為在我們的游戲中,敵機只要被一顆子碰撞到,就會發生爆炸,我們只想讓敵機的爆炸邏輯執行一次,即子彈打中敵機,敵機發生爆炸,這個過程就應該結束。如果在敵機與子彈發生碰撞后,不立即將敵機的碰撞解除,那么就意味著,如果再有一顆子彈碰撞到敵機,敵機就會再發生一次爆炸,很顯然,這不是我們期望的結果。
最后,我們處理得分的邏輯:
– 查看是否有敵機銷毀事件,如果有,就將得分加一
選中白色數字,為其添加如下的積木塊。
似乎還少了一個背景音樂,我們就將背景音樂的積木邏輯放在背景上,選中層級管理中的背景,然后添加如下的積木塊。
所有的邏輯部分都處理完了,在預覽場景之前,我們再做一點兒調整。
如圖,我們將敵機和藍色子彈的本體移除到界面之外,這樣游戲運行之后,就只能看到按照預定的邏輯出現的克隆體了。
點擊 預覽場景 看一下效果吧!
看起來還不錯,如果你一步一步的走到了這里,并看到了上方的效果,那么意味著你的第一個小游戲馬上就要做出來了。
當前的星空背景是固定不動的,理論上來講當我們向上移動時,周圍的景物是應該向下移動的,下面我們對游戲的背景進行一下簡單的設置,讓其具備移動的功能。
在圖層區中選中背景,然后在圖層屬性區中點擊 管理行為 按鈕。
在彈出的 管理行為 頁面中將 循環滾動 右側的開關打開。
添加完行為后,你會發現在圖層屬性區的下方出現了 循環滾動 的條目。
設置一下循環滾動,因為這是個豎屏的游戲,所以平鋪方向選擇 豎向 ,然后勾選 自動移動。
再次,點擊 預覽場景 看一下效果:
背景開始向下移動了,有在太空中飛行的感覺了。
試著碰撞一架敵機,看看游戲結束的畫面。
你可能發現了,當你點擊開始按鈕想要再次進行游戲時,沒有任何反應。下面我們就來看一下是哪里出了問題,并將它解決。
我們選中層級管理中的開始按鈕,看一下它的邏輯。
它的邏輯是點擊后,切換到游戲場景,這是在開始場景中我們為它添加的邏輯,目的是從開始場景跳轉到游戲場景,但是這里我們已經身在游戲場景中了,所以點擊開始按鈕沒有任何效果。
我們對其做一下修改,使用一塊重啟當前場景的積木,這樣當點擊開始按鈕后,就會重新啟動當前的場景了。
最后不要忘了,在重新開始游戲后,要將是否結束的全局變量設置為 0。
再次預覽一下場景,碰撞一個敵機,顯示游戲結束提示,然后點擊開始按鈕,游戲再次開始了。
現在,將場景切換到開始場景,選擇開始_1 按鈕,你會發現,它的積木邏輯也變成了我們剛才修改的邏輯。
小提示:因為我們在開始場景和游戲場景都用的是同一個開始精靈素材,所以使用的邏輯也都是相同的,如果想要使用不同的邏輯就需要再創建新的開始精靈素材,然后為其增加新的邏輯。
我們要重新為開始場景創建一個開始按鈕素材。在素材管理器中右鍵點擊開始精靈,然后選擇 復制。
這樣就增加了一個新的 開始 -1精靈。
我們修改一下其中的邏輯積木,為了便于區分將兩個素材進行重命名,一個為 開始 - 開始場景 ,另一個為 開始 - 游戲場景。
這樣我們就有了兩個開始精靈,并且每一個都帶有自己的積木邏輯了。
最后,我們移除開始場景中原有的開始按鈕,將新的開始 - 開始場景素材拖拽進來。
點擊 預覽場景,看一下最終的效果:
恭喜,你的第一個小游戲完成了。
總結一下:
我們按照太空保衛者的游戲設計方案,將游戲一步一步的做了出來,如果你之前從未有過游戲開發經驗,那么這就是你人生中做出的第一個游戲了。
祝賀你!
如果你最終沒有做出預期的效果,那么你可能需要多讀幾遍,并且按照文中的截圖認真比對看看哪里出了問題,如果有看不懂的積木邏輯,那么你可能需要回顧之前所學的與積木有關的內容。
有任何的疑問,歡迎給我留言。另外,如果你覺得這個系列教程對你來說有價值,歡迎 點贊 和分享,讓它有機會被更多的人看到。
我是會做游戲也會教你做游戲的小螞蟻,歡迎關注我的頭條號,私信學習資料,領取全網最全的微信小游戲開發系列原創教程資料。
丸趣 TV 網 – 提供最優質的資源集合!