日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(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ù)

 
 
 
  1. //方法用途:檢測2個物體是否碰撞      
  2. //參數(shù)object1:物體1      
  3. //參數(shù)object1:物體2      
  4. //參數(shù)overlap:可重疊的區(qū)域值      
  5. //返回布爾值:碰撞返回true,不碰撞返回false      
  6. function CheckIntersect(object1, object2, overlap)      
  7. {      
  8.     //    x-軸                      x-軸      
  9.     //  A1------>B1 C1              A2------>B2 C2      
  10.     //  +--------+   ^              +--------+   ^      
  11.     //  | object1|   | y-軸         | object2|   | y-軸      
  12.     //  |        |   |              |        |   |      
  13.     //  +--------+  D1              +--------+  D2      
  14.     //  看圖可知兩物體各4個點的位置      
  15.     A1 = object1.x + overlap;      
  16.     B1 = object1.x + object1.image.width - overlap;      
  17.     C1 = object1.y + overlap;      
  18.     D1 = object1.y + object1.image.height - overlap;      
  19.        
  20.     A2 = object2.x + overlap;      
  21.     B2 = object2.x + object2.image.width - overlap;      
  22.     C2 = object2.y + overlap;      
  23.     D2 = object2.y + object2.image.width - overlap;      
  24.        
  25.     //假如他們在x-軸重疊      
  26.     if(A1 > A2 && A1 < B2      
  27.        || B1 > A2 && B1 < B2)      
  28.     {      
  29.         //判斷y-軸重疊      
  30.         if(C1 > C2 && C1 < D1      
  31.        || D1 > C2 && D1 < D2)      
  32.         {      
  33.             //碰撞      
  34.             return true;      
  35.         }      
  36.     }      
  37.     return false;      
  38. }    

二、熊碰撞蘑菇發(fā)生的事件以及處理

 
 
 
  1. //動物碰撞蘑菇      
  2. function HasAnimalHitMushroom()      
  3. {      
  4.     //假如碰撞      
  5.     if(CheckIntersect(animal, mushroom, 5))      
  6.     {      
  7.         //假如碰撞的位置屬于蘑菇的左下位置      
  8.         if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.25))      
  9.         {      
  10.             horizontalSpeed = -speed;//反彈      
  11.         }      
  12.         //假如碰撞的位置屬于蘑菇的左上位置      
  13.         else if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.5))      
  14.         {      
  15.             //反彈速度減半      
  16.             horizontalSpeed = -speed/2;      
  17.         }      
  18.         //假如碰撞的位置屬于蘑菇的右上位置      
  19.         else if((animal.x + animal.image.width/2) < (mushroom.x + mushroom.image.width*0.75))      
  20.         {      
  21.             horizontalSpeed = speed/2;      
  22.         }      
  23.         else     
  24.         {      
  25.             horizontalSpeed = speed;      
  26.         }      
  27.         verticalSpeed = -speed;//改變垂直速度。也即動物向上移動      
  28.        
  29.     }      
  30. }    

三、在游戲循環(huán)GameLoop()尾部中加入熊碰撞蘑菇函數(shù),如下

 
 
 
  1. //游戲功能循環(huán)      
  2.    function GameLoop()         
  3.    {         
  4.        //清除屏幕         
  5.        ctx.clearRect(0, 0, screenWidth, screenHeight);         
  6.        ctx.save();         
  7.        //繪制背景         
  8.        ctx.drawImage(backgroundForestImg, 0, 0);         
  9.        //繪制蘑菇         
  10.        ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);       
  11.     //繪制熊      
  12.     //改變移動動物X和Y位置      
  13.     animal.x += horizontalSpeed;      
  14.     animal.y += verticalSpeed;      
  15.     //改變翻滾角度      
  16.     animal.angle += bearAngle;      
  17.     //以當前熊的中心位置為基準      
  18.         ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));      
  19.     //根據當前熊的角度輪換      
  20.     ctx.rotate(animal.angle * Math.PI/180);      
  21.     //描繪熊      
  22.     ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));      
  23.        ctx.restore();      
  24.     //檢測是否碰到邊界      
  25.     HasAnimalHitEdge();      
  26.     //檢測熊碰撞蘑菇      
  27.     HasAnimalHitMushroom();      
  28.        }       

到此第五回的完整代碼如下:

 
 
 
  1.         
  2.         
  3.         
  4.         
  5. 蘑菇動起來-html5中文網        
  6.      
  7.         
  8.         
  9.         
  10.         
  11.         
  12.             
  13.                
  14.         瀏覽器不支持html5,請下載支持html5的瀏覽器來觀看       
  15.                 
  16.     
        
  •                
  •        
  • 第五回就講到這了,第六回講描繪獎品

    【編輯推薦】

    1. 蘑菇與熊游戲開發(fā)第一回(游戲分析)
    2. 蘑菇與熊游戲開發(fā)第二回(讓蘑菇動起來)
    3. 蘑菇與熊游戲開發(fā)第三回(讓熊動起來)
    4. 蘑菇與熊游戲開發(fā)第四回(熊碰撞邊界處理)
    5. 蘑菇與熊游戲開發(fā)第六回(繪制獎品)
    6. 蘑菇與熊游戲開發(fā)第七回(熊碰到獎品處理)
    7. 蘑菇與熊游戲開發(fā)第八回(完善游戲)

    當前標題:蘑菇與熊游戲開發(fā)第五回(熊碰撞蘑菇處理)
    地址分享:http://m.5511xx.com/article/dpoedjg.html