Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了让cocos2dx 支持Staggered格式的tmx大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

让cocos2dx 支持Staggered格式的tmx

分类:cocos2dx 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;
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,请注明来意。