瓦片地图中的 GID
GID in Tile Map
最近我正在使用 Phaser.js 开发一个游戏,我开始需要我的瓦片地图对象,我来看这个 video。
唯一的问题是"sprites make objects"看到这个example,这个方法用的是map:
map.createFromObjects('Object Layer 1', 34, 'coin', 0, true, false, coins);
其中 34 是 "gid" ... 如何将此值添加到 JSON?因为在创建 tilemap 和对象时,没有对象被分配 "gid"。我必须手动设置它吗._。 ?
我使用 Tiled Map Editor 谁能帮帮我?
我遇到了同样的问题。我不知道一个好的解决方案,但我只是通过使用文本编辑器打开 .json 文件来手动添加 gid。寻找写着
的内容
"name":(Your object layer name),
"objects":[
{
first object properties...
},
{
second object properties...
}
现在,对于要分配 gid 的每个对象,将此文本添加到其属性的顶部。
"gid":(Desired gid),
请务必将逗号放在末尾。
这是一个例子:
"name":"mainObjects",
"objects":[
{
"gid":34,
"height":32,
"id":6,
"name":"",
"properties":
{
},
"rotation":0,
"type":"fire",
"visible":true,
"width":32,
"x":352,
"y":1248
},
{
"gid":34,
"height":32,
"id":7,
"name":"",
"properties":
{
},
"rotation":0,
"type":"fire",
"visible":true,
"width":32,
"x":384,
"y":1248
}],
注意我是如何为每个对象添加 "gid" 属性 并为其分配值 34 的,这个值可以是你想要的任何值。
现在这会很烦人,因为每次导出分块地图时,它都会删除 gid。就像我说的,这不是一个很好的解决方案,但在有人可以用更好的解决方案做出回应之前,它会一直有效。
@weastie 是的,这是一个可以接受的解决方案。但是,如果我有 20 个或 100 个对象可能是一种折磨。我已经找到了一个解决方案,就是这个,也许你可以在这个时候为你服务,而不是这个。
function create() {
...
map = game.add.tilemap('map');
map.addTilesetImage('ground_1x1');
map.addTilesetImage('walls_1x2');
map.addTilesetImage('tiles2');
...
map.objects.Objects.forEach(function(element) {
element.gid = 34;
}, this);
...
map.setCollisionBetween(1, 12);
layer = map.createLayer('Tile Layer 1');
layer.resizeWorld();
map.createFromObjects('Object Layer 1', 34, 'coin', 0, true, false, coins);
}
map.objects
是具有对象数组 ("Object Layer 1") 的对象。您所要做的就是访问数组名称并使用 foreach 修改每个对象。这是一个简单的方法...
最近我正在使用 Phaser.js 开发一个游戏,我开始需要我的瓦片地图对象,我来看这个 video。
唯一的问题是"sprites make objects"看到这个example,这个方法用的是map:
map.createFromObjects('Object Layer 1', 34, 'coin', 0, true, false, coins);
其中 34 是 "gid" ... 如何将此值添加到 JSON?因为在创建 tilemap 和对象时,没有对象被分配 "gid"。我必须手动设置它吗._。 ?
我使用 Tiled Map Editor 谁能帮帮我?
我遇到了同样的问题。我不知道一个好的解决方案,但我只是通过使用文本编辑器打开 .json 文件来手动添加 gid。寻找写着
的内容"name":(Your object layer name),
"objects":[
{
first object properties...
},
{
second object properties...
}
现在,对于要分配 gid 的每个对象,将此文本添加到其属性的顶部。
"gid":(Desired gid),
请务必将逗号放在末尾。 这是一个例子:
"name":"mainObjects",
"objects":[
{
"gid":34,
"height":32,
"id":6,
"name":"",
"properties":
{
},
"rotation":0,
"type":"fire",
"visible":true,
"width":32,
"x":352,
"y":1248
},
{
"gid":34,
"height":32,
"id":7,
"name":"",
"properties":
{
},
"rotation":0,
"type":"fire",
"visible":true,
"width":32,
"x":384,
"y":1248
}],
注意我是如何为每个对象添加 "gid" 属性 并为其分配值 34 的,这个值可以是你想要的任何值。
现在这会很烦人,因为每次导出分块地图时,它都会删除 gid。就像我说的,这不是一个很好的解决方案,但在有人可以用更好的解决方案做出回应之前,它会一直有效。
@weastie 是的,这是一个可以接受的解决方案。但是,如果我有 20 个或 100 个对象可能是一种折磨。我已经找到了一个解决方案,就是这个,也许你可以在这个时候为你服务,而不是这个。
function create() {
...
map = game.add.tilemap('map');
map.addTilesetImage('ground_1x1');
map.addTilesetImage('walls_1x2');
map.addTilesetImage('tiles2');
...
map.objects.Objects.forEach(function(element) {
element.gid = 34;
}, this);
...
map.setCollisionBetween(1, 12);
layer = map.createLayer('Tile Layer 1');
layer.resizeWorld();
map.createFromObjects('Object Layer 1', 34, 'coin', 0, true, false, coins);
}
map.objects
是具有对象数组 ("Object Layer 1") 的对象。您所要做的就是访问数组名称并使用 foreach 修改每个对象。这是一个简单的方法...