本来下午一直在纠结用什么设计关卡地图的事,中间还考虑过使用excel,但是发现很难用。后来美术随口说了一句,用瓦片地图怎样?我说那个只能固定格子来排列吧,他说可以不用的。我这才去试了一下,果然可以。
Tiled 有如下几个很方便的功能,跟大家分享一下。
对象层创建的对象,位置是可以不严格按照格子来定位的。
这里有几种选择:
将地图的属性中的格子大小调小。比如我们认为1米对应100像素,那么一个1.8米的人就是180像素高。
如果我们认为对齐的精度只要到10像素即可,那么就可以将格子大小调整为10x10。
之后选择
视图 -> 捕获 -> 对齐网格
,或者移动对象的时候按住ctrl,就可以实现对象位置自动对齐网格了。就是希望自由定义位置,那就什么也不用改。
对象支持类型以及属性
这样对编程就非常方便了,代码可以通过对象不同的type来区分大类,之后再以对象name来区分小类,然后再通过属性获取具体的数据。
对地图编辑也非常友好,因为不同的类型可以设置不同的颜色,这样编辑的时候就非常清晰了。
值得一提的是,对象类型是不绑定在单个地图上的,所以如果需要创建多个地图的话,是可以公用对象类型的。
对象支持模板
这个也是对于编辑多张地图非常重要的事,非常幸运的事,tiled支持了它。
- 首先要在
视图->视图和工具栏->模板
这里打开模板。 - 之后随便创建一个对象,比如一个hero。再其上点击鼠标右键,选择保存为模板hero.tx/hero.json,我们选择json格式,看到后面你就知道为什么了。
- 在模板视图中切换到刚刚保存模板的目录。
- 选中hero.json,在菜单栏中找到插入模板的按钮,即可在地图上插入。
模板与实例之间是存在关联关系的
- 默认情况下,模板改了属性,实例会自动跟着变化
- 如果实例手动改过了属性A,那个之后模板修改属性A的默认值将会不影响到该实例。但是其他属性依然会影响,很像编程里的继承。
- 如果在实例上面点击鼠标右键选择了拆分,则可以在左边对象视图的模板一行看到已经解除了关联关系,那么之后模板怎么修改也不会影响到该实例了。
- 在实例上点击鼠标邮件可以看到重置模板示例,意思为将实例重置回与模板一模一样。还有一个替换为模板xxx,就是字面意思的替换了。
- 首先要在
地图,图层都是支持属性的
这样就很方便对全局或者每个mission做设置,非常方便。
很方便的数据导出
最基本到json导出就已经能满足大部分需求了,也可以直接导出js和lua格式,是不是很酷?
但是查看导出的内容(以json为例):
{ "compressionlevel":-1, "editorsettings": { "export": { "format":"csv", "target":"demo1.csv" } }, "height":100, "infinite":true, "layers":[ { "draworder":"topdown", "id":2, "name":"mission_1", "objects":[ { "id":8, "template":"..\/templates\/hero.json", "x":-524, "y":-646 }, { "id":9, "template":"..\/templates\/hero.json", "x":-188, "y":-632 }, { "id":10, "template":"..\/templates\/hero.json", "x":-378, "y":-360 }, { "id":11, "template":"..\/templates\/hero.json", "x":-644, "y":-118 }, { "id":12, "template":"..\/templates\/hero.json", "x":-128, "y":-58 }, { "id":13, "template":"..\/templates\/hero.json", "x":-346, "y":206 }, { "id":14, "template":"..\/templates\/hero.json", "x":298, "y":140 }, { "id":15, "template":"..\/templates\/hero.json", "x":142, "y":-414 }, { "id":16, "template":"..\/templates\/hero.json", "x":136, "y":-40 }, { "id":17, "template":"..\/templates\/hero.json", "x":428, "y":-706 }], "opacity":1, "type":"objectgroup", "visible":true, "x":0, "y":0 }], "nextlayerid":3, "nextobjectid":18, "orientation":"orthogonal", "renderorder":"right-down", "tiledversion":"1.3.4", "tileheight":100, "tilesets":[], "tilewidth":100, "type":"map", "version":1.2, "width":100 }
也就是导出的json是强依赖了hero.json,所以如果需要正常解析,需要将模板和导出的结果放在一起使用。
差不多就是这样,具体的使用经验,等后面我们具体用的时候再聊。
另外,目前还在研究做一个演出脚本解释器,还没有特别好的思路,有了解的朋友欢迎介绍下,多谢啦。
评论
暂无评论