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

做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于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度地图场景 资源

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 前言 2016年,我写了一系列的 VUE 入门教程,当...

23890
来自专栏企鹅号快讯

从网站结构出发,提升搜索引擎的友好度

搜索引擎爬取网站内容都是从网站的结构出发,为了提升搜索引擎的友好的,优化网站结构是重点。和对待用户一样,对待搜索引擎也需要投其所好,才能获取它的友好度。 ? 1...

22760
来自专栏喵了个咪的博客空间

[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun ? 今天有给大家带来新的东西KcpTun,KcpTun是利用Kcp技术对Tcp链路传输进行加速,大家熟...

93090
来自专栏工作随笔

改VB.NET“偷懒”技巧

【开篇胡侃】虽然搞软件开发很多年了,但似乎从没有动手写过什么(很丢脸的感觉),因为,我的精力都献给了我的其他爱好,比如健身、美食、旅游等等,反而把自己最该专注的...

332130
来自专栏SDNLAB

OpenStack Neutron之OpenStack网络基础

OpenStack在这几年风生水起。随着核心模块稳定性的提高,OpenStack已经有了很多大规模商用的案例,所有与云相关的,无论是商用软件还是开源平台都在积极...

43180
来自专栏Android 开发者

Android P 开发者预览版首发!

25120
来自专栏Android 开发者

Android 9 Pie 现已面向全球正式发布!

经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 —— Android 9 Pie 终于正式面向全球发布!

7.3K10
来自专栏知晓程序

如何在微信群里发通知?这个方法特别好用

今天,「知晓程序」推荐的小程序「群里有事」,也许能解决这个问题。在这里,你不仅可以发布通知、活动,而且它有一种强大的魔力,吸引大家去查看。

16510
来自专栏云计算D1net

容器和微服务器如何改变安全性

原生云应用程序和基础设施需要完全不同的安全方法。请牢记下面这些最佳实践。 ? 如今,大大小小的组织正在探索云原生软件技术的应用。“原生云(cloud-nati...

38560
来自专栏CSDN技术头条

荔枝FM架构师刘耀华:异地多活IDC机房架构

声明:本文首发于CSDN,禁止未经许可的任何形式转载,可咨询文末的责编。 多机房架构存在的原因 ? 单机房一旦死机,断电、维护根本无法挽回整个数据,想离线读取等...

49960

扫码关注云+社区

领取腾讯云代金券