2017-06-18 39 views
0

我目前正在尋找方法將平鋪中製作的瓷磚地圖導入到相位器中。有關TileProperties的問題TileSet

在Tiled中,我創建了一個名爲「terrain」的tileset,爲tileset中的每個tile類型設置自定義屬性,用一些tiletype填充地圖,然後將地圖導出爲json。

set tileProperties

然後,在移相器,I LOAD所述JSON到移相器作爲tilemap的。

//load the json into a tilemap 
this.game.load.tilemap('plain', 'Content/map/plain.json', null, Phaser.Tilemap.TILED_JSON); 
//initialize a new map from a loaded tile map 
this.map = this.game.add.tilemap('plain'); 
//set the map tileset image 
this.map.addTilesetImage('terrain', 'terrain'); 
//create the layer with the same name in the tilemap 
this.layer = this.map.createLayer('background'); 

之後,我嘗試訪問加載的tilemap的tileset「terrain」的tileProperties。

//get the tileindex of a tile at the coordinate (0,0) 
var tileindex = this.map.getTile(0, 0, 'background').index; 
//get the tileset index of the tileset that is named "terrain" 
var tilesetindex = this.map.getTilesetIndex('terrain'); 
// get the tileset 
var tileset = this.map.tilesets[tilesetindex]; 

但後來,我發現在類TileSet中沒有tileProperties。

因此,我進入github存儲庫並搜索「tileProperties」,發現TileMapParser.js中有一塊code,它爲tileset設置tileProperties,但類TileSet的定義中沒有tileProperties。

我的問題是爲什麼有代碼設置類TileSet的tileProperties,但類TileSet的定義中沒有這樣的屬性?

回答

0

如果你想訪問您在瓷磚設置塊屬性,你可以做這樣的:

// get a reference to the tile 
var tile = this.map.getTile(0, 0, 'background'); 

// access the property 
var property = tile.properties.property; 

凡財產是財產的,你要訪問的名稱,在你的情況下會是地形。如果你不確定,你可以在從Tiled導出的json中查找。

This example在phaser網站上是一個很好的演示。

希望這有助於!