TiledMap简介

TiledMap是一款地图编辑器。我们常用它编辑一些相似度很大的背景,例如天天酷跑,游戏的地图就是用很多相同的色块组成。如果用纯代码取拼接那会很复杂,如果用TileMap去制做一个地图,那么运用起来就很简单。

/************************************************************************/

/*打开Tiled软件,新建一个文件,设置宽度和高度,然后添加图块(下图),添加好了后

自己创建地图,然后保存为level01.tmx.

*/

/************************************************************************/

1.在程序中加载tmx文件

CCTMXTiledMap *map = CCTMXTiledMap::create("level01.tmx");

this->addChild(map);

2.使用对象层(设置一个固定的精灵起点)

命名为objects,

设置对象属性,

在代码中获取到X和Y坐标的值:

/*加载对象层*/

CCTMXObjectGroup *objGroup = map->objectGroupNamed("objects");

/*加载玩家坐标对象*/

CCDictionary* playerPointDic = objGroup->objectNamed("PlayerPoint");

float x = playerPointDic->valueForKey("x")->floatValue();

float y = playerPointDic->valueForKey("y")->floatValue();

/*设置玩家坐标*/

m_player->setPosition(ccp(x,y));

3.添加障碍物,Tiled障碍层的使用

命名barrier,

此时主角精灵还是能够越过这个障碍继续向前,还得建一个meta层,添加新素材meta_tiles.png

选择第一个方块,右键

然后选中meta层,将刚才的方块挨个放在之前的障碍物上面,保存地图。

代码中如何判断:

CCPoint tiledCoordForPosition(CCPoint pos)

/*函数功能:将像素坐标转换成地图格子坐标*/

CCSize mapTiledNum = m_map->getMapSize();//地图方块数

CCSize tiledSize = m_map->getTiledSize();//单个方块的大小

int x = pos.x/tiledSize.width;

int y = (640-pos.y)/tiledSize.height;

if(x>0){

x-=1;

if(y>0){

y-=0;

return ccp(x,y);

void setTagPosition(int x,int y)

/*判断前方是否不可通行*/

/*取主角前方的坐标*/

CCSize spriteSize = GetSprite()->getContentSize();

CCPoint dstPos = CCPoint(x+spriteSize.width/2,y);

/*获得相应坐标的格子位置*/

CCPoint tiledPos = tiledCoordForPosition(ccp(dstPos.x,dstPos.y));

/*获得格子的唯一标示*/

CCTMXLayer* meta = m_map->layerNamed("meta");

meta->setVisible(false);

meta->retain();

int tiledGid = meta->tileGIDAt(tiledPos);

/*不为0表存在这个格子*/

if(tiledGid!=0)

/*这个格子既属于meta,同时也属于整个地图的*/

CCDictionary* propertiesDict = m_map->propertiesForGID(tiledGid);

/*取得格子的属性*/

const CCString* prop = propertiesDict->valueForKey("Collidable");

/*判断Collidable里面的属性值是否为true,如果是,不让玩家移动*/

if(prop->m_sString.compare("true")==0){

return;

Entity::setTagPosition(x,y);

/*以主角为中心移动地图*/

setViewPointByPlayer();

4.从障碍层清除当前格子的物体

CCTMXLayer* barrier = m_map->layerNamed("barrier");

barrier->removeTileAt(tiledPos);

以上就是TiledMap地图的使用,希望能帮到大家,如果大家还想了解的更多,可以参考《瓦片地图 Tiled Map》

tiledmap 图块属性_TiledMap地图使用相关推荐

  1. tiledmap 图块属性_tiledmap 可以在图块层的指定格子上添加Sprite吗

    constructor(mapname:string, x:number, y:number){ super(); //显示登陆界面 this.tMap = new Laya.TiledMap() t ...

  2. tiledmap 图块属性_Tiled Editor 图块的两种导入方式

    一.图块集图块的导入. 打开或者创建地图后,新建 新图块. 弹出新图块面板 图块类型选择 "基于图块集图块",一定要选择"嵌入地图",否则需要另存为其他类型的文 ...

  3. RPG游戏 01-人物行走和地图图块

    要开发一个游戏,地图是首先应该考虑的,我这里使用的是tiled来编辑地图.tiled对于一般的游戏开发还行,相对通用,不过也没有那么强的针对性.所以在开发游戏时要对从tiled解析的内容里再在程序中进 ...

  4. (Tiled官方文档翻译)第五节:图块集的编辑

    编辑一个tileset(图块集)需要将图块集显式地打开.内部的图块集可以通过文件菜单来打开,但是通常是通过点击图块集窗口下方的"编辑图块集"小按钮来快速打开编辑图块集. 5.1 两 ...

  5. vb外部调用autocad_AutoCAD教程之图块的各种相关操作和概念

    制图过程中,有时常需要插入某些特殊符号供图形中使用,此时就需要运用到图块及图块属性功能.利用图块与属性功能绘图,可以有效地提高作图效率与绘图质量.也是绘制复杂图形的重要组成部分. 一.图块的特点 图块 ...

  6. lisp把选集转成表_晓东CAD家园-论坛-LISP/VLISP程序库-[LISP程序]:把text转为属性图块 - Powered by Discuz!...

    ;;把text转为属性图块 ;;By LUCAS (defun C:C_DEF (/ HOLDECHO HOLDBLIP HOLDREQ SS SSS N A AA A1 A73 HH LST_210 ...

  7. cocos2d-x TiledMap获取tiled属性:tiledID、旋转以及翻转信息

    针对地图TiledMap工具地形刷出的图块进行属性获取的方法 这块也是找了半天,最后通过TMXLayer类源码查询获得结果,在此记录下 工具操作: 1.按x,y键进行tiled对应的x,y轴翻转 2. ...

  8. idea 编写javafx_用JavaFX编写图块引擎

    idea 编写javafx 随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备. 因此,我决定对JavaFX进行更多的游戏编 ...

  9. 用JavaFX编写图块引擎

    随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备. 因此,我决定对JavaFX进行更多的游戏编写实验. 这次,我想使用Ca ...

  10. javafx 教程_用JavaFX编写图块引擎

    javafx 教程 随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备. 因此,我决定对JavaFX进行更多的游戏编写实验. ...

最新文章

  1. TRUNK配置详细讲解
  2. RocketMQ控制台安装教程
  3. duilib控件的一些属性
  4. KRPano JS 场景编辑器源码
  5. Afterthought 原来是这样的啊。。。。
  6. extend 对象继承
  7. windox与ubuntu18.04安装clion及导入qt库
  8. 如何设置dedecms自定义表单必填项?
  9. 太赞了,竟然用SpringBoot打造一款网页版的IM,进行聊天...
  10. Arcgis 连接PostgreSQL
  11. 往linux内核添加ch341,linux 4.1 usb驱动之usb_serial芯片ch341
  12. 剪切caspase3_Proteintech抗体检测caspase 3前体及剪切体 - 泽浩公司
  13. matlab 脉冲压缩算法,雷达脉冲压缩matlab
  14. win10命令行动态调整网卡优先级
  15. zrst指令是什么意思_三菱PLC梯形图所有指令符号是什么意思?
  16. 花了两天时间用html+css+js做了一个网页版坦克大战游戏
  17. C语言数码管节日灯,硬件课程设计报告可编程节日彩灯(C语言).pdf
  18. python中的global是什么意思_Python中的global关键字,你了解吗?
  19. java中 a-zA-z_关于java:Regex:/ w表示[a-zA-Z]还是[a-zA-Z0-9_],因为大多数教程都提到w-匹配单词字符?...
  20. 00后确实卷,公司新来的卷王,我们这帮老油条真干不过...

热门文章

  1. vba mysql 3706_Excel、VBA与MySQL交互
  2. 99行代码的《冰雪奇缘》,收下我的膝盖!
  3. 注册机是如何获取序列号的?
  4. R语言查看某个R包版本号
  5. 机器学习(周志华) 第八章集成学习
  6. linuxshell编程_使shell命令发包软件-当你在Linux shell调用外部程序,如
  7. 计算机哪个专业学linux_5种用于计算机维修的专业Linux发行版
  8. Delphi书籍 教程下载
  9. Android 仿今日头条频道管理(GridView之间Item的移动和拖拽)
  10. lol鲁大师帧数测试软件,lol配置检测