小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man
本篇进行垂直方向上的碰撞检测,测试的方法就是把主角的初始高度设高,让主角落至地面:
来看判断垂直方向的碰撞的函数playermapvcollision:
前面几句是获得主角的位置和宽高以及获得地图,然后通过如下几句获得主角在地图上的索引横纵坐标并进一步获得主角所在图素块的tilegID:
indexx=(playerpoint.x)/map->getTileSize().wIDth;
indexy=map->getMapSize().height-(playerpoint.y)/map->getTileSize().height;
CCPointplayerindex=ccp(indexx,indexy);
inttilegID=layer->tileGIDAt(playerindex);
当获得纵坐标的时候需要注意的是纵坐标除以图素高并不能直接获得在地图中的图素纵坐标索引,因为地图的索引是从左上角开始的,而坐标是从左下角开始,所以需要转换一下,用整个地图的纵坐标格数map->getMapSize().height减去我们纵坐标除以图素高的值便是主角所在位置的纵坐标索引值。接下来获得之前定义的“collion”值,如果“collion”值为1,那么停掉主角在纵坐标运动的标志vmove,否则vmove会被设置为1,也就是让主角一直延纵坐标移动。
然后在update中调用playermapvcollision,然后在处理纵坐标的位移,这里只是简单的让主角作匀速直线运动
如有错误之处,希望大家多多指正
总结以上是内存溢出为你收集整理的cocos2d-x游戏实例(25)-简易动作游戏(3)全部内容,希望文章能够帮你解决cocos2d-x游戏实例(25)-简易动作游戏(3)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)