美文网首页
tiledMap的使用(一)(1.0.3版本为例)

tiledMap的使用(一)(1.0.3版本为例)

作者: 园Flora | 来源:发表于2021-02-09 11:21 被阅读0次

    一、基本功能

    1、图块:

    建议镶入地图,这样使用时不用管加载图块的路径问题。

    图块可以编辑属性

    注意:编辑器里图块id从0开始,但是代码里获取属性的方法,id是从1开始的

    单个图块可以编辑自定义属性、地形和碰撞区域(为一个对象,后面详细说明)

    自定义地形:把某个地形的边角都圈出来,绘制地图的时候可以用地形来整体刷

    图块碰撞编辑,可以自定义碰撞区域,但是这区域导出会导出为对象,获取属性获取不到,需要对这个区域再定义属性的名字等参数,获取的时候需要通过tilemap的getObjectGroup去获取(跟图块就绑定不上了,需要自己通过名称或者别的东西去绑定。可以理解为单独创建了一个对象)

    2、层和对象组

    层:画地图,也可以把层分类去做处理,比如河流和地板分开,墙和路分开,便于代码里使用。(个人感觉也可以用图块的属性来实现这些功能)

    【图层里图块的位置如图,在代码里获取图块的时候是这样对应的 GroundLayer:getTileAt(cc.p(1,0))。】

    【单个图块的锚点在左下脚,图层的锚点也是左下脚】

    对象组:跟操作相关的一些功能,比如设置出生点,怪物产生的点等,甚至一些移动的线路图之类的

    对象也可以定义属性和和形状

    3、地图属性

    图块层格式默认是base64 zlib压缩的,意思是把图块层的数据先用zlib压缩了一下,然后用base64编码了,正常导出后只能看到个data。选择xml的格式的话导出是能看到图块层的具体数据的。

    导出时可以选择导出成各种格式。【有个预感是导出成lua格式,然后知道图层的数据,是不是就可以自己写渲染了,实现分块加载、滑动到哪里就渲染哪里。(正常是一次性渲染,地图很大的时候,glverts很高)】【经测试证明,并没有卡。。。这个跟图块的种类数有关,虽然节点数很多,但是在渲染的时候图块一次性加载进去(类似图集),不用一直切换图片,所以glcalls还是很低的,加载滑动都挺正常,当有两种图块集的时候建议分两层去绘制,每个层只用一种】

    GroundLayer:getTileAt(cc.p(1,0))

    4、上代码

    创建 local tilemap = cc.TMXTiledMap:create(tilemapURl)

    获取对象层  local objects = tilemap:getObjectGroup("objects")

    获取对象  local burnPos = objects:getObject("burnPos")

    获取层  local GroundLayer = tilemap:getLayer("Ground")

    关键源码:TMXTiledMap   TMXLayer  CCTMXXMLParser

    相关文章

      网友评论

          本文标题:tiledMap的使用(一)(1.0.3版本为例)

          本文链接:https://www.haomeiwen.com/subject/dnvqxltx.html