大佬教程收集整理的这篇文章主要介绍了让cocos2dx 支持Staggered格式的tmx,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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; unsignedint@H_493_74@maxVal=0; if(@H_493_74@m_bUseAutomaticVertexZ) { switch(@H_493_74@m_uLayerOrientation) { caseCCTMXOrientationStaggered: caseCCTMXOrientationIso: @H_493_74@maxVal=(unsignedint)(@H_493_74@m_tLayerSize.width+@H_493_74@m_tLayerSize.height); ret=(int)(-(@H_493_74@maxVal-(pos.x+pos.y))); break; caseCCTMXOrientationOrtho: ret=(int)(-(@H_493_74@m_tLayerSize.height-pos.y)); break; caseCCTMXOrientationHex: CCassert(0,"TMXHexazOrdernotsupported"); break; default: "TMXinvalidvalue"); break; } } else { ret=@H_493_74@m_nVertexZvalue; } returnret; }
最关键的是CCTMXLayer.cpp文件中
positionAt
函数,此函数负责绘制Staggered格式的地图
CCPointpositionAt(constCCPoint&pos) { CCPointret=CCPointZero; switch(@H_493_74@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*@H_493_74@m_tMapTileSize.width)+@H_493_74@m_tMapTileSize.width/2)+((int)pos.y&1)*@H_493_74@m_tMapTileSize.width/2,(pos.y+1)*@H_493_74@m_tMapTileSize.height/2); returnxy; }
最终效果如下:
由此我们就可以使用CCTMXTiledMap来处理45度Staggered格式的tmx了
以上是大佬教程为你收集整理的让cocos2dx 支持Staggered格式的tmx全部内容,希望文章能够帮你解决让cocos2dx 支持Staggered格式的tmx所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。