小满(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)的意思
如有错误之处,希望大家多多指正
下一篇继续纵版射击游戏实例