2016-07-23 55 views
2

最近我正在開發一款使用Phaser.js的遊戲,我已經開始需要我的瓷磚貼圖對象,並且我來看看這個videoGID in Tile Map

唯一的問題是,「精靈使物體」見狀example,使用這種方法地圖:

map.createFromObjects('Object Layer 1', 34, 'coin', 0, true, false, coins); 

其中34是「GID」 ......我怎麼能將此值添加到JSON ?因爲在創建tilemap和對象時,沒有任何對象被分配「gid」。我是否必須手動設置._。 ?

我使用平鋪地圖編輯器任何人都可以幫我嗎?

回答

1

@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

是具有對象的陣列( 「對象層1」)的對象。您只需訪問數組名稱並用foreach修改每個對象。這是一個簡單的方法...

1

我遇到了同樣的問題。我不知道一個好的解決方案,但我剛剛通過使用文本編輯器打開.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。就像我說的那樣,這不是一個很好的解決方案,但它會起作用,直到有人能夠以更好的方式迴應。

+1

奇怪。我想知道原始的GID資產從哪裏來?平鋪的老編輯回來的一天?謝謝! –