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


微信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文件,用於積分和結算界面

 

 

 

判斷游戲結束后,顯示結算頁面,並新增點擊重新開始事件

 

 

 

游戲結束后,手指觸摸事件

 

 

 

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

新增代碼

 

 

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

 

 

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

 

 

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

 

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

 

 

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

 

 

 

 

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM