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

来源:互联网 发布:题目解答软件 编辑:程序博客网 时间:2024/05/29 16:18

小满(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)的意思

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

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

0 0
原创粉丝点击