微信demo小遊戲:飛機大戰從無到有

紫雲之軒發表於2019-06-09

微信demo遊戲飛機大戰從無到有

 

現在建立新專案會預設給飛機大戰的demo,這裡給大家從基礎開始講解遊戲的從無到有是怎麼實現的。

 

具體實現步驟:

建立背景圖->背景圖運動起來->建立飛機並隨背景圖一起動->控制飛機移動->飛機發射子彈->建立敵機->消滅敵機->玩家飛機被擊毀->顯示結算介面

 

首先刪除所有自帶檔案,只保留game.jsgame.jsonproject.config.json(原來的最好保留,因為等會要複製一些內容)

 

刪除game.js中的內容,此時模擬器為一片漆黑,如下圖所示

 

 

好,我們正式開始一步步開始編寫飛機大戰

 

官方提供了Adapter庫,方便我們操作,官方的解釋如下:

 

 

這裡weapp-adapter足夠用,就不用其它遊戲引擎了!

 

 

 

1、weapp-adapter

新建JS資料夾,在js資料夾中新建libs資料夾,將weapp-adapter複製進來(原來儲存中複製),然後js目錄下新建一個main.js檔案

 

 

2、game.js中新增程式碼

 

 

main.js先空著,我們要先建立精靈類

 

3、建立精靈類

精靈,是構成遊戲中活動體(比如,飛機、野獸等遊戲人物)的最基本單元。

 

JS目錄下新建sprite.js檔案,新增程式碼,定義背景圖的檔案,大小,位置等,並顯示在畫布上。

 

 

4、顯示背景圖

然後新增背景圖片images/bg.jpg,在background.js檔案中新增程式碼

 

 

 

 

 

背景圖片的方法已經完成,現在到主函式main.js中實現圖片顯示,新增程式碼

 

 

即可實現圖片載入,效果如下:

 

 

 

5、背景圖運動起來

如果細心的朋友會發現,前面背景圖方法裡是繪製了兩張圖片的,一張是和鋪滿螢幕的,另一張是在螢幕上方看不到的。

如果讓背景圖運動起來,就要是圖片向下移動,因為每一幀都會重新繪製,所以要再背景圖方法中加一個向下運動的方法

 

 

然後再loop迴圈中新增

 

 

此時背景圖就運動起來了

 

 

6、載入飛機,並隨地圖一起運動

新建玩家飛機類

 

 

在主函式中新增飛機相關

 

 

 

 

loop迴圈中的內容拆分為重繪和更新

 

 

此時,玩家飛機出現,並可以和地圖一起運動

 

 

 

7、控制飛機移動

新增判斷手指的相關動作,以及判斷是否處於螢幕中

 

 

 

此時,飛機的位置可以通過手指和滑鼠進行控制

8、發射子彈

這個時候因為子彈會有很多個,而且超出螢幕的要回收掉,所以要加全域性管理器和物件池

Base目錄中新增pool.js檔案(物件池),js目錄中新增databus.js檔案(全域性管理器),這兩個檔案可以複製原來的

 

新增子彈類檔案bullet.js,複製原來的即可

 

飛機類新增程式碼發射子彈

 

 

主函式檔案中新增

 

 

Render中重繪子彈

Update中更新子彈的位置,並每隔20幀發射一枚子彈,數值越小,發射速度越快

 

 

 

已完成子彈發射的功能。

 

9、建立敵機

 

敵機會有爆炸的動畫,所以要新建一個幀動畫類和敵機類

幀動畫類:base目錄下的animation.js

敵機類:npc目錄下enemy.js

(複製過來就行,具體不做詳解)

 

主函式中新增生成敵機的程式碼

 

 

 

此時不會有敵機爆炸,也沒有撞機的功能

 

10、消滅敵機

 

 

主函式中新增全域性碰撞檢測,被註釋掉的是玩家飛機和敵機碰撞,暫時先不要

 

 

全域性碰撞方法要放到update函式中,此時可以消滅敵機,但是沒有爆炸動畫,玩家也是出於無敵狀態的。

 

 

 

新增程式碼,顯示爆炸動畫

 

11、玩家飛機被擊毀,遊戲結束

 

 

然後控制遊戲不再更新

 

 

 

這個時候畫面靜止不動了,遊戲結束了

 

12、顯示結算介面

runtime資料夾中新增gameinfo.js檔案,用於積分和結算介面

 

 

 

判斷遊戲結束後,顯示結算頁面,並新增點選重新開始事件

 

 

 

遊戲結束後,手指觸控事件

 

 

 

此時,如果遊戲結束後,點選重新開始,會發現不正常,遊戲立馬結束了,原因是原來所有的遊戲單元都還在。

新增程式碼

 

 

所有的單元全部重置,此時又有新的問題,遊戲速度變的越來越快了

 

 

此時可以重新開始,但是飛機不能移動了,原因很簡單,事件監聽中還是開始的事件,要刪除掉

 

 

至此,已經完成了飛機大戰的製作了(音效就沒管了,需要可以自己研究一下)

 

結束。。等等,遊戲中的時候居然沒有顯示實時積分??這個居然漏了,現在補上

 

 

上面是顯示積分,下面是積分增加,消滅一個敵機加一

 

 

 

 

至此,真的結束了,至少每一步是怎麼實現的,應該有所瞭解,具體實現的邏輯可以自己研究,後續會有更多的例項提供大家參考。

順便打個廣告,歡迎大家關注笑林新記,每天都有不一樣的爆笑內容,可以放鬆一下,掃碼關注一下吧,我的更新也在這裡。

這裡也附上我個人的微信,歡迎大家和我交流

 

相關文章