让cocos2dx 支持Staggered格式的tmx

让cocos2dx 支持Staggered格式的tmx,第1张

概述让cocos2dx 支持Staggered格式的tmx 分类: cocos2dx 2013-08-05 22:52  2581人阅读  评论(6)  收藏  举报 tiled支持创建Staggered格式的地图而cocos2dx本身是不支持此种格式的显示的,所以我们就改动cocos2dx小小的代码来实现支持。代码很简单,而且未动着主体框架的代码,只是tilemap_parallax_nodes目录 让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了

总结

以上是内存溢出为你收集整理的让cocos2dx 支持Staggered格式的tmx全部内容,希望文章能够帮你解决让cocos2dx 支持Staggered格式的tmx所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1032363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存