读书人

html5游戏开发-气愤的小鸟-开源讲座(三

发布时间: 2012-09-25 09:55:58 作者: rapoo

html5游戏开发-愤怒的小鸟-开源讲座(三)-碰撞产生的冲力

在前面已经实现了利用外力将小鸟弹飞出去,并且实现了镜头的跟随。本次来研究一下小鸟与其他物体之间发生碰撞时的冲力,以及由碰撞而使物体发生变形,进而消失,下面是前两讲的链接,看本篇教程之前请朋友们最好先了解一下。

html5游戏开发-愤怒的小鸟-开源讲座(一)-跳入弹出的小鸟

http://blog.csdn.net/lufy_legend/article/details/7765599

html5游戏开发-愤怒的小鸟-开源讲座(二)-跟随小鸟的镜头

http://blog.csdn.net/lufy_legend/article/details/7782968


其实在box2d中,只要我们设定了物体的密度,摩擦,以及弹力等属性之后,他们之间会模拟真实的世界进行碰撞,如果想要根据这些碰撞来做一些特殊的处理的话,就需要取得它们之间碰撞的冲力,从而根据冲力的大小来做自己想要做的事情,在lufylegend库件中使用下面一行代码来检测碰撞。

html5游戏开发-气愤的小鸟-开源讲座(三)-碰撞产生的冲力

然后,建立Pig类如下

html5游戏开发-气愤的小鸟-开源讲座(三)-碰撞产生的冲力

为了便于操作这些物体,我们和上面的猪头一样,建立一个Stage类,如下


如果你玩过愤怒的小鸟这个游戏的话,对上面的画面应该不陌生吧,它就是愤怒的小鸟第一关的画面。

接下来,修改碰撞检测函数,因为我在lufylegend库件中将body的UserData设置成了LSprite对象本身,所以这里通过GetUserData来得到LSprite对象


可以看到,画面中的猪头和一些木条的状态都已经发生了变化了,这样我们就完成了根据碰撞来改变物体的状态了,下面当猪头的hp变为0的时候,将它移除游戏画面。

一般猪头在消失的时候,会有一个类似爆炸的效果,如下图

html5游戏开发-气愤的小鸟-开源讲座(三)-碰撞产生的冲力

下面建立一个RemoveObject类来实现这一效果



大家可以看到,上面的小鸟已经把猪头给撞爆了!


下面给出本次教程的源码,lufylegend库件和box2dweb需要自己下载配置一下,库件1.4.1的扩展部分请到第一讲中下载。

http://fsanguo.comoj.com/download.php?i=AngryBirds3.rar


本系列讲座到此为止了,愤怒的小鸟的基本功能已经都实现了,剩下的就是将元素多样化了,大家可以尽情发挥自己的想象力,制作自己喜欢的物理游戏了。

1楼crh_oz36分钟前
学习

读书人网 >开源软件

热点推荐