最后更新于 .

本来下午一直在纠结用什么设计关卡地图的事,中间还考虑过使用excel,但是发现很难用。后来美术随口说了一句,用瓦片地图怎样?我说那个只能固定格子来排列吧,他说可以不用的。我这才去试了一下,果然可以。

Tiled 有如下几个很方便的功能,跟大家分享一下。

  1. 对象层创建的对象,位置是可以不严格按照格子来定位的。

    这里有几种选择:

    1. 将地图的属性中的格子大小调小。比如我们认为1米对应100像素,那么一个1.8米的人就是180像素高。

      如果我们认为对齐的精度只要到10像素即可,那么就可以将格子大小调整为10x10。

      之后选择 视图 -> 捕获 -> 对齐网格,或者移动对象的时候按住ctrl,就可以实现对象位置自动对齐网格了。

    2. 就是希望自由定义位置,那就什么也不用改。

  2. 对象支持类型以及属性

    这样对编程就非常方便了,代码可以通过对象不同的type来区分大类,之后再以对象name来区分小类,然后再通过属性获取具体的数据。

    对地图编辑也非常友好,因为不同的类型可以设置不同的颜色,这样编辑的时候就非常清晰了。

    值得一提的是,对象类型是不绑定在单个地图上的,所以如果需要创建多个地图的话,是可以公用对象类型的。

  3. 对象支持模板

    这个也是对于编辑多张地图非常重要的事,非常幸运的事,tiled支持了它。

    1. 首先要在 视图->视图和工具栏->模板 这里打开模板。
    2. 之后随便创建一个对象,比如一个hero。再其上点击鼠标右键,选择保存为模板hero.tx/hero.json,我们选择json格式,看到后面你就知道为什么了。
    3. 在模板视图中切换到刚刚保存模板的目录。
    4. 选中hero.json,在菜单栏中找到插入模板的按钮,即可在地图上插入。

    模板与实例之间是存在关联关系的

    1. 默认情况下,模板改了属性,实例会自动跟着变化
    2. 如果实例手动改过了属性A,那个之后模板修改属性A的默认值将会不影响到该实例。但是其他属性依然会影响,很像编程里的继承。
    3. 如果在实例上面点击鼠标右键选择了拆分,则可以在左边对象视图的模板一行看到已经解除了关联关系,那么之后模板怎么修改也不会影响到该实例了。
    4. 在实例上点击鼠标邮件可以看到重置模板示例,意思为将实例重置回与模板一模一样。还有一个替换为模板xxx,就是字面意思的替换了。
  4. 地图,图层都是支持属性的

    这样就很方便对全局或者每个mission做设置,非常方便。

  5. 很方便的数据导出

    最基本到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,所以如果需要正常解析,需要将模板和导出的结果放在一起使用。

差不多就是这样,具体的使用经验,等后面我们具体用的时候再聊。

另外,目前还在研究做一个演出脚本解释器,还没有特别好的思路,有了解的朋友欢迎介绍下,多谢啦。

Pingbacks

Pingbacks已打开。

Trackbacks

引用地址

评论

暂无评论

发表评论