让cocos2dx 支持Staggered格式的tmx
发布时间:2020-12-14 20:06:22 所属栏目:百科 来源:网络整理
导读:让cocos2dx 支持Staggered格式的tmx 分类:cocos2dx 2013-08-05 22:52 2581人阅读 评论(6) 收藏 举报 tiled支持创建Staggered格式的地图而cocos2dx本身是不支持此种格式的显示的,所以我们就改动cocos2dx小小的代码来实现支持。代码很简单,而且未动着主体框
让cocos2dx 支持Staggered格式的tmx
分类:cocos2dx
2013-08-05 22:52
2581人阅读
评论(6)
收藏
举报
tiled支持创建Staggered格式的地图而cocos2dx本身是不支持此种格式的显示的,所以我们就改动cocos2dx小小的代码来实现支持。代码很简单,而且未动着主体框架的代码,只是tilemap_parallax_nodes目录下的简单修改。
首先在CCTMXTiledMap.h文件中定义枚举类型: /**PossibleorientationsoftheTMXmap*/ enum { /**Orthogonalorientation*/ CCTMXOrientationOrtho,/**Hexagonalorientation*/ CCTMXOrientationHex,/**Isometricorientation*/ CCTMXOrientationIso,/**Hexagonalorientation*/ CCTMXOrientationStaggered,//此处我加入了Staggered格式来支持,因为以后的解析需要用到 }; 然后使用CCTMXOrientationIso作为关键字搜索需要用到枚举的地方,我们可以看到有如下一些:
很多地方的都是case,那么仿造一个就行了, 如: intCCTMXLayer::vertexZForPos(constCCPoint&pos) { intret=0; unsignedintmaxVal=0; if(m_bUseAutomaticVertexZ) { switch(m_uLayerOrientation) { caseCCTMXOrientationStaggered: caseCCTMXOrientationIso: maxVal=(unsignedint)(m_tLayerSize.width+m_tLayerSize.height); ret=(int)(-(maxVal-(pos.x+pos.y))); break; caseCCTMXOrientationOrtho: ret=(int)(-(m_tLayerSize.height-pos.y)); break; caseCCTMXOrientationHex: CCAssert(0,"TMXHexazOrdernotsupported"); break; default: "TMXinvalidvalue"); break; } } else { ret=m_nVertexZvalue; } returnret; } 最关键的是CCTMXLayer.cpp文件中 positionAt
函数,此函数负责绘制Staggered格式的地图
CCPointpositionAt(constCCPoint&pos) { CCPointret=CCPointZero; switch(m_uLayerOrientation) { caseCCTMXOrientationStaggered: ret=positionForStagAt(pos); break; caseCCTMXOrientationOrtho: ret=positionForOrthoAt(pos); break; caseCCTMXOrientationIso: ret=positionForIsoAt(pos); break; caseCCTMXOrientationHex: ret=positionForHexAt(pos); break; } ret=CC_POINT_PIXELS_TO_POINTS(ret); returnret; } 实现的函数如下:
positionForStagAt(constCCPoint&pos) { CCPointxy=CCPointMake(((pos.x*m_tMapTileSize.width)+m_tMapTileSize.width/2)+((int)pos.y&1)*m_tMapTileSize.width/2,(pos.y+1)*m_tMapTileSize.height/2); returnxy; }
最终效果如下:
由此我们就可以使用CCTMXTiledMap来处理45度Staggered格式的tmx了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |