`
wjlgryx
  • 浏览: 306905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

html5 手把手教你做游戏《熊和蘑菇》(五)

阅读更多
熊碰撞蘑菇处理

第五回主要讲熊碰到蘑菇之后向上反弹的效果
预期达到的效果:http://www.html5china.com/html5games/mogu/index4.html
一、由于碰撞的地方比较多,所以定义一个通用的判断2个物体是否碰撞的函数
JavaScript Code复制内容到剪贴板
1. //方法用途:检测2个物体是否碰撞  
2. //参数object1:物体1  
3. //参数object1:物体2  
4. //参数overlap:可重叠的区域值  
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. } 
二、熊碰撞蘑菇发生的事件以及处理
JavaScript Code复制内容到剪贴板
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. } 
三、在游戏循环GameLoop()尾部中加入熊碰撞蘑菇函数,如下
JavaScript Code复制内容到剪贴板
1. //游戏功能循环  
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.        }    
到此第五回的完整代码如下:

展开XML/HTML Code复制内容到剪贴板
第五回就讲到这了,第六回讲描绘奖品
分享到:
评论

相关推荐

    手把手教你学DSP:基于TMS320F28335

    手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F...

    003《老HRD手把手教你做绩效考核》.pdf

    003《老HRD手把手教你做绩效考核》.pdf

    手把手教你用C#制作RPG游戏

    《手把手教你用C#制作RPG游戏》是由罗培羽编著,海洋出版社于2014年5月出版的一本技术书籍,主要面向对游戏开发有兴趣,特别是想使用C#语言进行角色扮演游戏(RPG)开发的读者。本书通过详细的教学指导,帮助初学者...

    手把手教你用C#制作RPG游戏__罗培羽著

    《手把手教你用C#制作RPG游戏》是罗培羽撰写的一本深入浅出的IT书籍,专门针对想要学习如何使用C#编程语言开发角色扮演游戏(RPG)的读者。这本书详细介绍了从零开始构建RPG游戏的全过程,涵盖了C#的基础知识以及...

    《Qt5 PyQt 5实战指南-手把手教你掌握100个精彩案例》.rar

    《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》 《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》 《Qt5 PyQt 5实战指南—手把手教你掌握100个精彩案例》

    手把手教你学28335

    手把手教你学28335PDF文档,看了这个确实和2812有了对比

    手把手教你学DSPPDF

    【标题】"手把手教你学DSPPDF"是一份针对数字信号处理(DSP)初学者的教程性PDF文档,旨在引领读者逐步掌握这一领域的基础知识。该文档可能包含了从理论概念到实际应用的全面讲解,适合那些希望踏入数字信号处理世界...

    手把手教你学dsp2812,手把手教你学dsp2812pdf下载,C,C++

    《手把手教你学DSP2812》是一本专为初学者设计的 DSP(Digital Signal Processor)学习指南,主要围绕TI公司的TMS320F2812 DSP芯片进行讲解。这本书以其全面且易懂的特性,为读者提供了一个深入理解数字信号处理及其...

    教程手把手教你做问答系列答案.docx

    在本教程“手把手教你做问答系列”中,我们将深入探讨如何有效地进行问答系统的构建与优化。这个系列的目的是帮助初学者以及有一定经验的开发者掌握问答系统的核心技术和实践方法,从而能够创建出高质量的问答解决...

    手把手教你用C#制作RPG游戏素材包.rar

    在本资源包“手把手教你用C#制作RPG游戏素材包.rar”中,你将找到一系列用于创建角色扮演游戏(RPG)的素材,这些素材主要适用于C#编程环境下的游戏开发。RPG游戏通常需要丰富的视觉和听觉元素来营造沉浸式的游戏体验...

    手把手教你架构3D游戏引擎_姜雪伟_高清PDF扫描版

    本书主要介绍如何利用3D固定流水线编写游戏引擎,以及在已编写引擎的基础上开发游戏,全书共分10章,主要内容包括游戏引擎简介、数学知识、材质和光照、固定流水线、游戏引擎架构、3D引擎底层封装、3D引擎封装、游戏...

    新手入门级html5游戏开发源码(蘑菇熊)

    本资源“新手入门级html5游戏开发源码(蘑菇熊)”是一个很好的起点,它提供了一系列逐步教程,帮助初学者理解游戏开发的核心概念。 首先,我们来看标题中的"蘑菇熊",这很可能是游戏的主题或主角,展示了如何设计...

    手把手教你用C#制作RPG游戏__罗培羽著_北京:海洋出版社_2014.05_P256_13532862和Unity3D游戏制作-两份资料

    手把手教你用C#制作RPG游戏__罗培羽著是一本很好的国内开发RPG游戏的书籍,可以教会读者如何学会C#做游戏,而Unity3D网络游戏实战游戏开发与设计技术丛书 是在C#基础上,利用Unity引擎开发网络实战游戏,这两本书...

    手把手教你学DSP28335

    手把手教你学DSP28335,PDF格式,有助于随时随地可以学习知识。

    手把手教你学dsp

    手把手教你学dsp F2812 顾伟刚

    手把手教你dsp28335,高清pdf

    手把手教你学DSP28335高清pdf文件,北京航空航天大学出版社

    《手把手教你学51单片机》教材pdf

    《手把手教你学51单片机》是一本专为初学者设计的嵌入式开发入门教程,旨在帮助读者从零开始掌握51单片机的基础知识和应用技能。51单片机是嵌入式系统中最基础且广泛应用的一类微控制器,广泛应用于智能家居、工业...

    手把手教你架构3D游戏引擎

    《手把手教你架构3D游戏引擎》是一本深入探讨3D游戏引擎开发的书籍,作者姜雪伟通过详细的步骤和实例,旨在引导读者理解和构建自己的3D游戏引擎。该书内容涵盖3D图形学基础、固定流水线技术、游戏引擎架构设计等多个...

    手把手教你DSP配套资料

    “手把手教你DSP配套资料”这一压缩包很可能是包含了一系列关于DSP的学习材料,可能包括教程文档、示例代码、实验指导等。通过这些资料,你可以深入理解DSP的基本原理、算法和应用,逐步掌握实际操作技能,为你的...

    手把手教你制作html登录和注册页面

    手把手教你制作html登录和注册页面 手把手教你制作html登录和注册页面 手把手教你制作html登录和注册页面 手把手教你制作html登录和注册页面 手把手教你制作html登录和注册页面 手把手教你制作html登录和注册页面 ...

Global site tag (gtag.js) - Google Analytics