小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man
继续上一篇的简易动作游戏,本篇加入主角的跳跃,以及在跳跃过程中的碰撞检测,在动作游戏中跳跃是很重要的部分,首先来看效果:
首先是需要在操作的部分作修改,首先来看ccTouchesBegan函数的修改:
在之前对x轴运动的判断基础上,加入了对y轴的操控部分,即以主角的中心的水平线为基准,按键在此基准线之下的仅水平移动,即将y轴的初始速度设为0,在基准线之上的就会跳起来,即把y轴初始速度设为6(向上的初速度),而水平速度则取决于之前的判断,这里需要注意的还是之前的问题,就是我们获得的主角的x,y坐标是相对于地图的坐标,我们要获得他和屏幕的绝对位置的坐标还要加上地图的坐标。
下面来看处理纵坐标碰撞函数部分的修改,来看playermapvcollision函数:
首先加入判断,在我们发现主角踩在碰撞块上的时候只有当速度小于0,主角处于下降状态的时候,我们才作停止物体运动,矫正位置等处理,因为上升的过程中作碰撞处理会使我们的人物跳不起来(因为我们的人物一直踩在碰撞块上),当脚下没有碰撞块时每帧给y轴方向的速度减0.2,这是我调过的结果,我觉得这样的跳跃动作速度比较合理。这里还需要注意的是,我修改了vmove的类型,变为double型,让他可以存储小数值,使我们的跳跃速度更精确,这时候,上升下降的动作变为匀减速和匀加速运动。
如有错误之处,希望大家多多指正
下一篇继续简易动作游戏实例