GameBuilder開發遊戲應用系列之100行代碼實現微信打飛機

在線預覽:http://osgames.duapp.com/apprun.html?appid=osgames1-951421981197090
在線編輯:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-951421981197090
微信掃描:這裏寫圖片描述
微信打飛機實現起來並不難,需要用到的知識點有如下幾點:

  • 碰撞檢測:敵機與敵機之間不檢測,子彈與敵機需要檢測。
  • 觸摸跟隨:我方飛機要根據觸摸點的位置變化而變化。
  • 子彈與敵機生成:子彈需要定時發射,敵機隨機生成。
  • 背景滾動:不能看出背景圖片是拼接而成。

碰撞檢測

  • 碰撞只能發生在剛體與剛體之間,這裏的飛機是用幀動畫實現的,因此需要該幀動畫放在剛體內,作爲剛體的子控件。子彈是圖片,也要放在剛體裏面。
    看樹形圖

  • 如果希望同一類型的剛體不發生碰撞,只需要在剛體屬性中設置分組爲同一複數即可。
    這裏寫圖片描述

觸摸跟隨

  • 觸摸按下移動擡起,都會有對應的事件,這裏只需要處理移動事件即可,根據觸摸點的位置,調整飛機的位置。
    這裏寫圖片描述
    代碼如下:
var win = this.getWindow();
var me = win.find("my-plane");
me.setPosition(point.x - 0.5 * me.w , point.y - 0.5 * me.h);

子彈與敵機生成

  • 子彈應該是源源不斷往前發射的,因此需要一個定時器,在GameBuilder裏面有對應的定製器控件UITimer。只要像一般控件一樣拖進窗口裏面就能用,定時週期和次數在定時器特有屬性裏面配置,相關代碼只要寫到onTimeout事件裏面去即可。
    這裏寫圖片描述
  • 敵機的位置用javascript自帶的Math.random()函數即可。

背景滾動

在場景裏面,可以設置虛擬寬度/高度大於窗口寬度/高度,在背景圖片設置爲水平/垂直方向平鋪,然後只要對剛體設置屬性鏡頭跟隨我,即可實現場景跟着主角滾動的效果,例子參見李先靜老師的demo松鼠酷跑
但是我這裏做了觸摸跟隨,飛機的運動時隨機的,因此不適合設置鏡頭跟隨我,那樣的話場景就會上下晃動有點怪異。
這裏寫圖片描述
我這裏用另外一種方法,就是利用3張圖片和一個定時器來實現。定時器onTimeout事件代碼如下:

var win = this.getWindow();
var bg1 = win.find("bg-1");
var bg2 = win.find("bg-2");
var bg3 = win.find("bg-3");
var h = bg1.getHtmlImage().height;
bg1.setPosition(0, win.offset);
bg2.setPosition(0, win.offset - h);
bg3.setPosition(0, win.offset - 2*h);
win.offset += 2;
win.offset %= 2*h;

雖然整體框架實現起來不難,但是要優化的點還有很多,比如飛機加速控制,飛機隨機位置控制,飛機數量控制,留給有興趣的朋友。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章