让cocos2dx 支持Staggered格式的tmx
来源:互联网 发布:古代画家排名知乎 编辑:程序博客网 时间:2024/04/28 19:38
tiled支持创建Staggered格式的地图而cocos2dx本身是不支持此种格式的显示的,所以我们就改动cocos2dx小小的代码来实现支持。代码很简单,而且未动着主体框架的代码,只是tilemap_parallax_nodes目录下的简单修改。
首先在CCTMXTiledMap.h文件中定义枚举类型:
/** Possible orientations of the TMX map */enum{ /** Orthogonal orientation */ CCTMXOrientationOrtho, /** Hexagonal orientation */ CCTMXOrientationHex, /** Isometric orientation */ CCTMXOrientationIso,/** Hexagonal orientation */CCTMXOrientationStaggered, //此处我加入了Staggered格式来支持,因为以后的解析需要用到};
然后使用CCTMXOrientationIso作为关键字搜索需要用到枚举的地方,我们可以看到有如下一些:
很多地方的都是case,那么仿造一个就行了,
如:
int CCTMXLayer::vertexZForPos(const CCPoint& pos){ int ret = 0; unsigned int maxVal = 0; if (m_bUseAutomaticVertexZ) { switch (m_uLayerOrientation) {case CCTMXOrientationStaggered: case CCTMXOrientationIso: maxVal = (unsigned int)(m_tLayerSize.width + m_tLayerSize.height); ret = (int)(-(maxVal - (pos.x + pos.y))); break; case CCTMXOrientationOrtho: ret = (int)(-(m_tLayerSize.height-pos.y)); break; case CCTMXOrientationHex: CCAssert(0, "TMX Hexa zOrder not supported"); break; default: CCAssert(0, "TMX invalid value"); break; } } else { ret = m_nVertexZvalue; } return ret;}
最关键的是CCTMXLayer.cpp文件中
positionAt
函数,此函数负责绘制Staggered格式的地图CCPoint CCTMXLayer::positionAt(const CCPoint& pos){ CCPoint ret = CCPointZero; switch (m_uLayerOrientation) {case CCTMXOrientationStaggered:ret = positionForStagAt(pos);break; case CCTMXOrientationOrtho: ret = positionForOrthoAt(pos); break; case CCTMXOrientationIso: ret = positionForIsoAt(pos); break; case CCTMXOrientationHex: ret = positionForHexAt(pos); break; } ret = CC_POINT_PIXELS_TO_POINTS( ret ); return ret;}
实现的函数如下:
CCPoint CCTMXLayer::positionForStagAt(const CCPoint& pos){CCPoint xy = 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);return xy;}
最终效果如下:
由此我们就可以使用CCTMXTiledMap 来处理45度Staggered格式的tmx了。
0 0
- 让cocos2dx 支持Staggered格式的tmx
- 让cocos2dx 支持Staggered格式的tmx
- 让cocos2dx 支持Staggered格式的tmx
- 让cocos2dx 支持Staggered格式的tmx
- 让cocos2dx 支持Staggered格式的tmx
- tmx格式
- cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)
- cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)
- cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)
- cocos2dx 地图 Atlas Tmx
- cocos2dx TMX地图
- cocos2dx TMX地图
- Cocos2dx 学习笔记 -TMX和物理引擎的结合
- TMX地图格式
- (译)TMX地图格式
- TMX地图格式
- 让IIS支持FLEX的MXML格式
- 让你的网页支持WebP格式
- ACM2 递归 n分成k份
- org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool ex
- cocos2dx使用TiledMap创建斜45度地图场景
- 学习笔记
- D3DXMESHOPT_ATTRSORT
- 让cocos2dx 支持Staggered格式的tmx
- MySQL5.6.16数据库中type=MyISAM错误的解决办法
- URL启动本地app
- cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)
- HDU 2412
- c++中&符号的几种用法
- Hdu 4451 Dressing (简单容斥)
- Android 窃听用户发出的短信
- ffplay分析