Sign in to follow this  
Followers 0
Dlost1

Reference to tiled Object ID

3 posts in this topic

Hi!!

I would like to know: How do I refer to a Tiled/Json object id/name from phaser? 

I created an object in Tiled and when the user enters the area of this object (called tavern) a new game world/map should be opened (the player will enter the Tavern-map). 

How can I refer to an object in the object layer in my Json/Tiled map?

something like:

 var one = map.object.id(x)

if(playerX,playerY == oneX, oneY){game.state.start('GameMap2');}

Any idea's? An example to do this perhaps? 

Thanks in advance:)

 

 

(I have also tried: 

createFromObjects(name, gid, key, frame, exists, autoCull, group, CustomClass, adjustY)

Also attempted to copy the following example, but did does not work (it uses a gid...I do not have a gid in my Json I tried to us the "id" in its stead. This resulted in "undefinded" errors). 

https://phaser.io/examples/v2/tilemaps/create-from-objects

But in my Json there is no "gid"  Json code: 

Quote

    "draworder":"topdown",
         "height":204,
         "name":"ObjectLayer",
         "objects":[
                {
                 "height":80,
                 "id":5,
                 "name":"Tavern",
                 "rotation":0,
                 "type":"",
                 "visible":true,
                 "width":60,
                 "x":1169,
                 "y":1001
                }, 

 

Share this post


Link to post
Share on other sites

Still hoping to get some help (please?;))... apparantly the coin example is ancient.   (https://phaser.io/examples/v2/tilemaps/create-from-objects)

So I tried to auto add a gid myself (the game will have lots of objects): 

http://stackoverflow.com/questions/38544978/gid-in-tile-map

Quote

this.map.ObjectLayer.objects.forEach(function(element){
  element.gid=1;
}, this);

However I get: 

Uncaught TypeError: Cannot read property 'objects' of undefined   <-----------------Huh? 
    at Game.create (<anonymous>:177:10)
    at Phaser.StateManager.loadComplete (phaser.js:28530)
    at Phaser.StateManager.preUpdate (phaser.js:28307)
    at Phaser.Game.updateLogic (phaser.js:34908)
    at Phaser.Game.update (phaser.js:34801)
    at Phaser.RequestAnimationFrame.updateRAF (phaser.js:62538)
    at _onLoop (phaser.js:62521)

So I CAN acces "ObjectLayer" but "objects" gives undefined? What gives? 

Again Json:

Quote

"draworder":"topdown",
         "height":204,
         "name":"ObjectLayer",
         "objects":[
                {
                 "height":80,
                 "id":5,
                 "name":"Tavern",
                 "rotation":0,
                 "type":"",
                 "visible":true,
                 "width":60,
                 "x":1169,
                 "y":1001
                }, 

Anyone got any idea why I get undefined? 

Share this post


Link to post
Share on other sites

Ok, I finally got it:)

For other people struggling with this: I refered to the wrong labels here is what I did to solve it. It is highly likely that there is a better way than my rugged sollution, though. And ofcourse I d be happy to see comments improving my solution;)

I did as follows to fix this: 

Quote

preload: function(){

game.load.tilemap('GameWorld1616', 'assets/images/GameWorld.json', null, Phaser.Tilemap.TILED_JSON);  //preloading the Tiled map
 game.load.text('GameWorld1616', 'assets/images/GameWorld.json');  //preloading the same map again, but this time as text so I can parse it

}

create: function(){

this.b = JSON.parse(this.game.cache.getText('GameWorld1616'));    //parse the Json file so you can use it in Jscript/phaser

this.c = this.b.layers[4].objects;   //now you can refer to the objects in the Json file as long as you follow the document structure correctly. In my case layer 4 contained the objects.

}

 

The whole structure of my Json file to complete my solution: 

Quote
  1. Object
    1. height:204
    2. layers:Array[5]
      1. 0:Object
      2. 1:Object
      3. 2:Object
      4. 3:Object
      5. 4:Object
      6. length:5
      7. __proto__:Array[0]
    3. nextobjectid:9
    4. orientation:"orthogonal"
    5. renderorder:"right-down"
    6. tileheight:16
    7. tilesets:Array[20]
    8. tilewidth:16
    9. version:1
    10. width:204
    11. __proto__:Object

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.