cocos2d-x游戏实例(25)-简易动作游戏(3)

小满(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,然后在处理纵坐标的位移,这里只是简单的让主角作匀速直线运动

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

下一篇继续简易动作游戏实例


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值