蘑菇与熊游戏开发第三回(让熊动起来)

这一回我们让熊动起来。

目前创新互联已为上千家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、莫力达网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

预期达到效果:http://www.html5china.com/html5games/mogu/index2.html

一、先定义全局变量

 
 
 
  1. var bearEyesClosedImg = new Image();//闭着眼睛的熊熊       
  2. var horizontalSpeed = 2;//水平速度      
  3. var verticalSpeed = -2; //垂直速度,开始肯定是要向上飘,所以要负数      
  4. var bearAngle = 2;//熊旋转的速度    

二、定义熊

首先定义一只公用熊

 
 
 
  1. //定义动物熊 Animal 继承 游戏对象GameObject      
  2. function Animal() {};      
  3. Animal.prototype = new GameObject();//游戏对象GameObject      
  4. Animal.prototype.angle = 0;//旋转的角度,(用来改变熊的旋转速度)    

定义我们使用的熊

 
 
 
  1. //定义熊实例       
  2. var animal = new Animal();    

初始化熊

 
 
 
  1. bearEyesClosedImg.src = "images/bear_eyesclosed.png";//闭着眼睛的      
  2. animal.image = bearEyesClosedImg;//熊图片      
  3. animal.x = parseInt(screenWidth/2);//x坐标      
  4. animal.y = parseInt(screenHeight/2); //y坐标    

三、描绘熊在画布上

因为熊是相对移动的,所以我们要加一个基准

 
 
 
  1. //以当前熊的中心位置为基准      
  2. ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));      
  3. //描绘熊      
  4. ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));    

但是熊要旋转啊,好的,想要改变它的角度,上面的代码中加入旋转

 
 
 
  1. //以当前熊的中心位置为基准      
  2. ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));      
  3. //根据当前熊的角度轮换      
  4. ctx.rotate(animal.angle * Math.PI/180);      
  5. //描绘熊      
  6. ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));    

上面的熊是不动的,为什么呢,因为x,y轴和角度没变,因此我们再加上改变x,y和角度的代码,于是上面的代码变成了

 
 
 
  1. //改变移动动物X和Y位置      
  2. animal.x += horizontalSpeed;      
  3. animal.y += verticalSpeed;      
  4. //改变翻滚角度      
  5. animal.angle += bearAngle;      
  6. //以当前熊的中心位置为基准      
  7.         ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));      
  8. //根据当前熊的角度轮换      
  9.     ctx.rotate(animal.angle * Math.PI/180);      
  10. //描绘熊      
  11.     ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));    

到现目前为止熊已经能滚动和移动了,最终代码如下:

 
 
 
  1.         
  2.         
  3.         
  4.         
  5. 蘑菇动起来-html5中文网        
  6.      
  7.         
  8.         
  9.     //全局变量         
  10.     var backgroundForestImg = new Image();//森林背景图         
  11.     var mushroomImg = new Image();//蘑菇       
  12.     var bearEyesClosedImg = new Image();//闭着眼睛的熊熊       
  13.     var ctx;//2d画布         
  14.     var screenWidth;//画布宽度         
  15.     var screenHeight;//画布高度       
  16.     var speed = 2;//不变常量,从新开始的速度        
  17.     var horizontalSpeed = speed;//水平速度,随着熊的碰撞会发生改变      
  18.     var verticalSpeed = -speed; //垂直速度,开始肯定是要向上飘,所以要负数,随着熊的碰撞会发生改变      
  19.     var bearAngle = 2;//熊旋转的速度      
  20.     //公用 定义一个游戏物体戏对象         
  21.     function GameObject()         
  22.     {         
  23.         this.x = 0;         
  24.         this.y = 0;         
  25.         this.image = null;         
  26.     }         
  27.              
  28.     //定义蘑菇Mushroom 继承游戏对象GameObject         
  29.     function Mushroom() {};         
  30.     Mushroom.prototype = new GameObject();//游戏对象GameObject         
  31.     //蘑菇实例         
  32.     var mushroom = new Mushroom();        //循环描绘物体        
  33.            
  34.     //定义动物熊 Animal 继承 游戏对象GameObject      
  35.     function Animal() {};      
  36.     Animal.prototype = new GameObject();//游戏对象GameObject      
  37.     Animal.prototype.angle = 0;//动物的角度,目前中(即作为动物它在屏幕上旋转退回)      
  38.     //定义熊实例       
  39.     var animal = new Animal();      
  40.           
  41.     function GameLoop()         
  42.     {         
  43.         //清除屏幕         
  44.         ctx.clearRect(0, 0, screenWidth, screenHeight);         
  45.         ctx.save();         
  46.         //绘制背景         
  47.         ctx.drawImage(backgroundForestImg, 0, 0);         
  48.         //绘制蘑菇         
  49.         ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);       
  50.         //绘制熊      
  51.         //改变移动动物X和Y位置      
  52.         animal.x += horizontalSpeed;      
  53.         animal.y += verticalSpeed;      
  54.         //改变翻滚角度      
  55.         animal.angle += bearAngle;      
  56.         //以当前熊的中心位置为基准      
  57.         ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));      
  58.         //根据当前熊的角度轮换      
  59.         ctx.rotate(animal.angle * Math.PI/180);      
  60.         //描绘熊      
  61.         ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));      
  62.         ctx.restore();      
  63.         }         
  64.     //加载图片         
  65.     function LoadImages()         
  66.     {         
  67.         mushroomImg.src = "images/mushroom.png";//蘑菇         
  68.         backgroundForestImg.src = "images/forest1.jpg";//森林背景图        
  69.         bearEyesClosedImg.src = "images/bear_eyesclosed.png";//闭着眼睛的      
  70.               
  71.         mushroom.image = mushroomImg;         
  72.         animal.image = bearEyesClosedImg;      
  73.     }       
  74.     //事件处理         
  75.     function AddEventHandlers()         
  76.     {         
  77.         //鼠标移动则蘑菇跟着移动         
  78.         $("#container").mousemove(function(e){         
  79.             mushroom.x = e.pageX - (mushroom.image.width/2);         
  80.         });          
  81.                  
  82.     }       
  83.     //初始化         
  84.     $(window).ready(function(){          
  85.         AddEventHandlers();//添加事件        
  86.         LoadImages();                 
  87.         ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布            
  88.         screenWidth = parseInt($("#canvas").attr("width")); //画布宽度       
  89.         screenHeight = parseInt($("#canvas").attr("height"));         
  90.         //初始化蘑菇      
  91.         mushroom.x = parseInt(screenWidth/2);// 蘑菇X坐标        
  92.         mushroom.y = screenHeight - 40;//蘑菇Y坐标         
  93.         //初始化熊      
  94.         animal.x = parseInt(screenWidth/2);      
  95.         animal.y = parseInt(screenHeight/2);       
  96.         setInterval(GameLoop, 10);         
  97.     });         
  98.        
  99.         
  100.         
  101.         
  102.         
  103.         
  104.             
  105.                
  106.         浏览器不支持html5,请下载支持html5的浏览器来观看       
  107.                 
  108.     
        
  •                
  •        
  • 第三回就讲到这了,第四回讲熊碰撞边界和蘑菇的事件

    原文链接:http://www.html5china.com/course/20110101_899.html

    文章名称:蘑菇与熊游戏开发第三回(让熊动起来)
    分享网址:http://www.csdahua.cn/qtweb/news5/229605.html

    网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网

    成都快上网为您推荐相关内容

    微信公众号知识

    分类信息网站