从零开发CocosCreator+Nodejs麻将视频教程
31130 人在学
碰撞检测是我们游戏开发中非常重要的一部分,上几篇教程我们已经对碰撞检测有了大概的了解,本篇教程将以实例教大家在Cocos2d-x中如何设置碰撞检测。
本篇教程将讲解导弹发射与碰撞部分的代码,总体来说就和一个微型的飞行射击游戏差不多,但是在这部分内容里,游戏运用了一些碰撞后的特效代码如:背景闪烁、地面出现弹坑……不过貌似cocos2d-x没有完全封装chipmunk,所以示例中有些功能实现起来过于麻烦,如地面的碰撞线段按边缘附加本来可用的marchAllWithBorder,这样的方法就得替换成手动设置……因此像弹坑这样的效果就不打算再做了,反正弹坑效果也就是混合效果,主要是混合图形后产生新的碰撞线段没什么办法,可以在日后学习box2d后再自己玩下……这里只演示导弹撞击墙体后的爆炸效果:
1.首先需要定义一个炮弹的物理精灵,在原例中,通过自定义导弹对象的实现代码赋予了导出isTracking追踪重力点的属性,使得导弹可以在触摸移动时跟着移动的坐标飞行。这部分代码的实现方式我改用了前面用过的代码,把刚体、形状、精灵关联等代码全部封装进了自定义的导弹精灵类里:
导弹需要在物理世界里,所以上面继承的是物理精灵类,下面是实现文件:
一些计算、换算方法就自己琢磨下好了……下面是主层的类:
然后是创建四面墙体,代码稍微改了下:
然后是触屏部分的回调代码:
最后是碰撞回调的代码:
通过上面的代码就可以实现乌云按照触屏点发射导弹,并在与墙体碰撞时产生爆炸……因为有点懒,所以物理空间和形状的一些属性还是按照以前的代码设定,天空的闪烁动画也没做……这个自己有兴趣的话自己修改着玩就行了。有空再看看最后一节看能不能实现碰撞的撞击力,即可以在爆炸后把周围的箱子炸飞,目测是有cpBodyapplyImpulse这个函数……