位置: 编程技术 - 正文
推荐整理分享cocos2d-x游戏实例(24)-简易动作游戏(2)(cocos2dx游戏案例),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:cocos2d游戏源码,cocos2dx游戏有哪些,cocos2dx小游戏,cocos2d rpg,cocos2d rpg,cocos2dx游戏案例,cocos2dx游戏开发教程,cocos2dx小游戏,内容如对您有帮助,希望把文章链接给更多的朋友!
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址 layer = map->layerNamed("logic");//获得相应的地图层
int tilegid = layer->tileGIDAt(playerindex);//获得GID
CCMutableDictionary<string,CCString *> *tiledic = map->propertiesForGID(tilegid);//获得属性键对
CCString *mvalue = tiledic->objectForKey("collion");//获得属性colloion
int mv = mvalue->toInt();//转为整型数
整体的判断水平碰撞函数playermaphcollision如下:
首先是获得主角的站立位置,主角宽高,然后获得地图对象,之后便是一个for循环,这个for循环是从主角的脚底遍历到头顶的纵坐标,然后就是对应纵坐标和横坐标,除以图素的宽高,获得对应地图的索引坐标,由于我们要分别检测左侧和右侧的碰撞,所以相应的横坐标也就不同
获得左侧横坐标:indexx = (playerpoint.x - palyersize.width / 2) / map->getTileSize().width;
获得右侧横坐标:indexx = (playerpoint.x palyersize.width / 2 - 1) / map->getTileSize().width;
因为锚点在中心,所以左右侧分别就是减去和加上宽度的一半,然后不同之处就是,处理右侧时候要减一,因为我们左侧的碰撞是获得边界左侧的,而右侧的碰撞是获得边界右侧的。当我们的坐标属于以下范围时他属于这个图素块的索引index:(index - 1)* 图素宽 <= x < index * 图素宽,也就是我们的坐标如果等于右侧边界,那么他就会被算在下一个索引里,所以在处理右侧时为了防止等于边界时被误算入下一块图素块时出现“卡”在地图上的情况,在处理右侧碰撞时减一。
下面就是检测如果碰上碰撞块时把水平移动的标志设置为0,然后校正位置,把主角移动到不碰撞的位置上,并且重新设置主角位置;
另外,修正上一篇中的一个问题,在获得主角在屏幕中位置时要获得主角的绝对坐标,要加上地图的坐标,因为我们设置主角的位置时,是设置在地图上的,所以主角的位置是相对与地图坐标的,代码如下:
如有错误之处,希望大家多多指正
下一篇继续简易动作游戏
cocos2d-x游戏实例()-简易动作游戏(3) 小满(billman)个人原创,欢迎转载,转载请注明地址,小满(billman)的专栏地址
cocos2d-x游戏实例()-简易动作游戏(4) 小满(billman)个人原创,欢迎转载,转载请注明地址,小满(billman)的专栏地址
cocos2d-x游戏实例()-简易动作游戏(5) 小满(billman)个人原创,欢迎转载,转载请注明地址,小满(billman)的专栏地址
标签: cocos2dx游戏案例
本文链接地址:https://www.jiuchutong.com/biancheng/369016.html 转载请保留说明!友情链接: 武汉网站建设