cocos2d-x游戏实例(16)-纵版射击游戏(3)

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

上一篇搭建了纵版射击游戏游戏对象的简单结构,即所有游戏的对象(子弹,敌人,主角)继承于同一个类,本篇将会进一步完善这个游戏,加入主角移动时的残象和敌人的碰撞;

1.主角移动的残象

在我们移动主角的时候,加入一个“影子”的效果,可以感觉主角在“快速”地移动,效果如下:


方法很简单,就是在我们创建CCSprite的时候,我们再创建一个CCMotionStreak,并在我们每次移动CCSprite时,同时移动CCMotionStreak,这样就可以留下残象的效果

首先看创建时:


第一个参数为残象保留的时间,第二个参数为残象的片段数,第三个参数是图片的路径,第四第五个参数是残象的宽高,最后一个参数是残象的颜色,由于我们主角是红色,我们也把它设为红色。

然后再来看设置位置:


设置位置很简单,就是setPostion就可以了;

2.加入敌人并检测碰撞

效果图如下:


首先加入敌人的方式很简单,和加入主角一样,只是我们要给敌人加一个移动,就是在tick里控制敌人每帧的移动,然后在我们的主场景里调用这个tick就可以了。然后碰撞检测也在这里主场景的update里进行。

首先来看检测碰撞的函数collision:


这个碰撞检测很简单,就是检测敌人和主角的碰撞,也就是敌人本身和主角的sprite的碰撞,首先检测两个矩形中心的距离是否小于各自宽高一半的和,那么两个矩形就重合了,我们需要校正位置,把两个矩形校正为不碰撞即可。矩形的重合示意如下:


如果两个矩形重合,那么他们中心的横坐标差一定小于各自宽一半的和,纵坐标的差小于高一半的和,这也就是if(abs(ownp.x-otherp.x)<=ownsize.width/2+othersize.width/2&&abs(ownp.y-otherp.y)<=ownsize.height/2+othersize.height/2)的意思

如有错误之处,希望大家多多指正

下一篇继续纵版射击游戏实例

相关文章

操作步骤 1、创建cocos2d-x工程 2、新建 Scene1.cpp Scene1.h Scene1.h代码 #ifndef __SCENE1_H__#defi...
开发环境:OS(WINDOWS 8.1 X64 企业版) cocos2d-x 2.2.1 vs2010 想给vs安装上cocos的模版,执行Install...
把创建项目做成一个批处理,当创建项目时可以省时省力很多。 操作步骤 1、在 E:cocos2d-x-2.2.1toolspr...
https://www.cnblogs.com/JiaoQing/p/3906780.html 四个响应函数 1 EventListenerPhysicsContact* evC...
转载于 http://www.cnblogs.com/kenkofox/p/3926797.html 熟悉js的dom事件或者flash事件的,基本都能立...
ScrollView(滚动容器)加载大量item时会导致游戏界面的卡顿,严重时整个界面会出现卡死的情况。最近项...