新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
蘑菇與熊游戲開發(fā)第五回(熊碰撞蘑菇處理)
第五回主要講熊碰到蘑菇之后向上反彈的效果

10余年的鼓樓網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整鼓樓建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“鼓樓網站設計”,“鼓樓網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
預期達到的效果:http://www.html5china.com/html5games/mogu/index4.html
一、由于碰撞的地方比較多,所以定義一個通用的判斷2個物體是否碰撞的函數(shù)
- //方法用途:檢測2個物體是否碰撞
- //參數(shù)object1:物體1
- //參數(shù)object1:物體2
- //參數(shù)overlap:可重疊的區(qū)域值
- //返回布爾值:碰撞返回true,不碰撞返回false
- function CheckIntersect(object1, object2, overlap)
- {
- // x-軸 x-軸
- // A1------>B1 C1 A2------>B2 C2
- // +--------+ ^ +--------+ ^
- // | object1| | y-軸 | object2| | y-軸
- // | | | | | |
- // +--------+ D1 +--------+ D2
- // 看圖可知兩物體各4個點的位置
- A1 = object1.x + overlap;
- B1 = object1.x + object1.image.width - overlap;
- C1 = object1.y + overlap;
- D1 = object1.y + object1.image.height - overlap;
- A2 = object2.x + overlap;
- B2 = object2.x + object2.image.width - overlap;
- C2 = object2.y + overlap;
- D2 = object2.y + object2.image.width - overlap;
- //假如他們在x-軸重疊
- if(A1 > A2 && A1 < B2
- || B1 > A2 && B1 < B2)
- {
- //判斷y-軸重疊
- if(C1 > C2 && C1 < D1
- || D1 > C2 && D1 < D2)
- {
- //碰撞
- return true;
- }
- }
- return false;
- }
二、熊碰撞蘑菇發(fā)生的事件以及處理
- //動物碰撞蘑菇
- function HasAnimalHitMushroom()
- {
- //假如碰撞
- if(CheckIntersect(animal, mushroom, 5))
- {
- //假如碰撞的位置屬于蘑菇的左下位置
- if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.25))
- {
- horizontalSpeed = -speed;//反彈
- }
- //假如碰撞的位置屬于蘑菇的左上位置
- else if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.5))
- {
- //反彈速度減半
- horizontalSpeed = -speed/2;
- }
- //假如碰撞的位置屬于蘑菇的右上位置
- else if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.75))
- {
- horizontalSpeed = speed/2;
- }
- else
- {
- horizontalSpeed = speed;
- }
- verticalSpeed = -speed;//改變垂直速度。也即動物向上移動
- }
- }
三、在游戲循環(huán)GameLoop()尾部中加入熊碰撞蘑菇函數(shù),如下
- //游戲功能循環(huán)
- function GameLoop()
- {
- //清除屏幕
- ctx.clearRect(0, 0, screenWidth, screenHeight);
- ctx.save();
- //繪制背景
- ctx.drawImage(backgroundForestImg, 0, 0);
- //繪制蘑菇
- ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);
- //繪制熊
- //改變移動動物X和Y位置
- animal.x += horizontalSpeed;
- animal.y += verticalSpeed;
- //改變翻滾角度
- animal.angle += bearAngle;
- //以當前熊的中心位置為基準
- ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));
- //根據當前熊的角度輪換
- ctx.rotate(animal.angle * Math.PI/180);
- //描繪熊
- ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));
- ctx.restore();
- //檢測是否碰到邊界
- HasAnimalHitEdge();
- //檢測熊碰撞蘑菇
- HasAnimalHitMushroom();
- }
到此第五回的完整代碼如下:
蘑菇動起來-html5中文網
第五回就講到這了,第六回講描繪獎品
【編輯推薦】
- 蘑菇與熊游戲開發(fā)第一回(游戲分析)
- 蘑菇與熊游戲開發(fā)第二回(讓蘑菇動起來)
- 蘑菇與熊游戲開發(fā)第三回(讓熊動起來)
- 蘑菇與熊游戲開發(fā)第四回(熊碰撞邊界處理)
- 蘑菇與熊游戲開發(fā)第六回(繪制獎品)
- 蘑菇與熊游戲開發(fā)第七回(熊碰到獎品處理)
- 蘑菇與熊游戲開發(fā)第八回(完善游戲)
當前標題:蘑菇與熊游戲開發(fā)第五回(熊碰撞蘑菇處理)
地址分享:http://m.5511xx.com/article/dpoedjg.html


咨詢
建站咨詢
