cocos2dx使用TiledMap创建斜45度地图场景

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:

做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于cocos2dx来说,有很多2D的地图编辑器可以用,效果都还可以,其中Tiled是支持的比较好的,它支持Tiled编辑出来的几种模式,比如正常、45度地图等。

如果要做小型的手机游戏,使用正常模式就足够了,cocosdx支持的很好,如果要具有3D感,那么可以使用45度正常地图。但是如果要做大场景,比如底图4000*4000像素级别的,那么Tiled可以使用交错(Staggered)模式,但是cocos2dx封装的并不支持,需要修改源代码进行改造。

这里我就不写详细的步骤啦,有位达人已经在博客写了,我这里链接一下吧!

让cocos2dx 支持Staggered格式的tmx

附送他的另一篇博客,交错模式下的A*寻路算法代码。

cocos2dx 45度Staggered格式A*寻路 曼哈顿算法(待优化)

有一点需要注意的是,我在实践的时候发现他的算法有问题,没有考虑cocos2dx的坐标系,下面附上我的实现代码,最后我会把我封装的代码放在CSDN上,分享给大家。

CCPoint CCTMXLayer::positionForStaggeredAt(const CCPoint& pos)
{
	CCPoint xy = CCPointMake((pos.x * m_tMapTileSize.width) + ((int)pos.y % 2) * m_tMapTileSize.width / 2,
		(m_tLayerSize.height - (pos.y + 1)) * m_tMapTileSize.height/2 - m_tMapTileSize.height/2);
	return xy;
}

然后说一下我的心得,我原来自己写了一个A*算法,但是移植到cocos2dx后发现移动很不平滑,而且使用交错模式的代码很难懂,我不知道设计这种地图的人为啥把坐标转换搞的这么复杂,我用起来始终感觉不是很爽。

最后说一下cocos2dx+tiled的缺陷吧,可能我使用不是很深,吐槽的不对大家体谅!

1、贴图模式我觉得不太友好,对于正常的90度地图还好,对于45度这样的地图还要每个TILE单独贴,太麻烦了,设想一下4000*4000,需要贴多少次,应该支持大块大块的贴图。

2、cocos2dx对tiled的支持,每一层只支持一张图片,因为是使用TMXLayer是使用CCSpriteBatchNode方式实现的,这个局限对于大地图影响很大,我的4000*4000的图如果使用整图,那么当手机不能支持大于2048*2048的图片的时候就歇菜了。不使用整图就的分层,分层之后每一层产生大量的冗余tile,内存上升一半,超过100M。

晒一下我目前的成果吧,目前实现了场景阻挡、人物遮挡半透明,以及A*寻路等功能!目前这个我不是太满意,以后有时间我可能重写一个专用的45度地图编辑器。

\
\\

我封装的代码分享给大家吧!大家有什么问题可以咨询我!

cocos2dx使用TiledMap创建斜45度地图场景 资源

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • cocos2d-x学习笔记(19)--label 、label atlas
    • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
    • Cocos2d-x学习(一):HelloWorld
    • cocos2dx在xcode下开发,编译到android上(2)
    • cocos2d 设置屏幕默认方向
    • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
    • Cocos2d-x 2.0 之 Actions “三板斧” 之一
    • cocos2d-x学习笔记(18)--游戏打包(windows平台)
    • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1