cocos2dx使用TiledMap创建斜45度地图场景
做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于cocos2dx来说,有很多2D的地图编辑器可以用,效果都还可以,其中Tiled是支持的比较好的,它支持Tiled编辑出来的几种模式,比如正常、45度地图等。
如果要做小型的手机游戏,使用正常模式就足够了,cocosdx支持的很好,如果要具有3D感,那么可以使用45度正常地图。但是如果要做大场景,比如底图4000*4000像素级别的,那么Tiled可以使用交错(Staggered)模式,但是cocos2dx封装的并不支持,需要修改源代码进行改造。
这里我就不写详细的步骤啦,有位达人已经在博客写了,我这里链接一下吧!
附送他的另一篇博客,交错模式下的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度地图场景 资源
cocos2dx使用TiledMap创建斜45度地图场景的更多相关文章
- 45度地图遮挡问题解决方案(cocos2d-x)
最近一直在做45度斜视角游戏,也就是isometric等容地图,俗称2.5D.地图上物体的前后遮挡是我遇到的第一个问题,总结一下处理方法. 遮挡问题(不知道术语),就是比如一个角色站在树后面,那么树要 ...
- APP-4-百度地图定位
APP-3-百度地图应用 需要根据上一步完成百度地图应用的测试,本文介绍Hbuilder通过MUI框架完成百度地图的定位. 1.代码部分 <!DOCTYPE html> <html& ...
- mir9-lua——《热血沙城》45度ARPG手游-Lua移植版
mir9——<热血沙城>,是9秒论坛开源的一个使用Cocos2d-x-2.2.1引擎开发的45度ARPG手游Demo,源代码为c++.mir9-lua是mir9的Lua移植版,使用Quic ...
- 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家
原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...
- cocos2d-x 3.0 创建项目
cocos2d-x 3.0 创建项目 点击打开链接
- HTML5 Canvas 绘制旋转45度佛教万字
效果如下: 代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Cont ...
- Unity5.X 创建基本的3D游戏场景
点New(新建懒得写了,反正不是智障应该都会) 创建好的项目会自带一个场景,场景会自带Main Camera (主摄像机),Directional Light (方向光) 系统自带几个可以创建的3 ...
- cocos2dx A* + tiledMap
本文转自:http://blog.csdn.net/w18767104183/article/category/1757765 前面一章讲了cocos2dx 中使用A星算法 这章中讲 A*结合tile ...
- cocos2d-x使用python创建vs模板
cocos2d-x 2.2推荐使用create_project.py创建工程,所有的平台都可以通过这个python文件创建工程.这个文件位置在源码cocos2d-x-2.2.2\tools\proje ...
随机推荐
- activiti 学习( 三 ) 之 流程启动者
在启动一个流程时,我们会有将当前用户启动的流程保存起来,作为流程发起人(启动人.申请人.提交人) 而在保存这个流程启动者信息,api 没有明确规范该怎么存.所以这里我总结下我学到的保存流程启动者信息的 ...
- 【自动化测试】PO思路
http://blog.csdn.net/liubofengpython/article/details/7720078
- SqlDataAdapter的update方法
公司项目需要,需要将旧数据升级.所谓的旧数据指密码,密码经过了加密处理,但是可逆的.现将加密算法进行了更新,因此需要同步处理系统中已有的旧数据. 所有的数据存储在一个表中,简单的说是数据批量更新.自动 ...
- 平时学习HTML5及其安全相关的一些站点资源
http://www.w3.org/ -- HTML5一切标准都来自这里,如果你是发烧级HTML5患者,就读这个http://www.whatwg.org -- 和W3分分合合,最终共同指定HTML5 ...
- yii2.0 url 跳转
//转发 $this->render('page1',['id'=>3,'mark'=>2]); //显示page1页面 并传递 id mark 2个参数 //重定向 $thi ...
- 查看mysql库大小,表大小,索引大小
查看所有库的大小 mysql> use information_schema; Database changed mysql> selectconcat(round(sum(DATA_LE ...
- 【Sass初级】开始使用Sass和Compass
转自:http://www.w3cplus.com/preprocessor/beginner/getting-started-with-sass-and-compass.html 如果你的朋友.同事 ...
- c# 修改appConfig文件节点
配置文件对于程序的帮助是不可小视的,尤其是java工程师们,当然了,我这里说的是c#的配置文件.废话不多说了,直接上代码了,想必大家一看就会明白了 private string UpdateConfi ...
- C# GDI+学习笔记1
前言 本文是学习C# GDI+系列的第一篇文章,简单的介绍了GDI+的一些基本绘图内容,比较粗糙.但本文主要是让大家简单的回顾一下GDI+的基本概念.本篇文章的参考代码请在此下载 . GDIPTes ...
- webstorm无法格式化
快捷键失效,一般都是由于快键键冲突引起的.但是像CTRL + ALT + L的组合件冲突,还是没见过. 后来在网上查知,网易云音乐,会引发此冲突,果然高手在网络啊. 打开设置,禁用网易云音乐快捷键,妥 ...