您的位置:首页 > 移动开发 > Cocos引擎

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

2012-03-13 21:36 218 查看
小满(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)的意思

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

下一篇继续纵版射击游戏实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: