2016-03-01 3 views
2

J'ai une réponse étrange avec getProperties().get("value").Libgdx getProperties(). Get ("valeur") me donner une réponse étrange

Vous pouvez voir ci-dessous mes tmx file et les valeurs fournies par mon programme.

<objectgroup name="objects"> <object id="1" name="player" type="player" x="256" y="3072" width="1290" height="1290"> <properties> 
    <property name="name" value="Ahhhh"/> 
    <property name="nom" value="Bhhhh"/> 
    <property name="velocity" value="1.0"/> </properties> </object> </objectgroup> 

code source

MapObject mapPlayer = currentMap.getLayers().get("objects").getObjects().get("player"); 
MapObjects mapObject = currentMap.getLayers().get("objects").getObjects(); 
for (Iterator<String> iter = mapPlayer.getProperties().getKeys(); iter.hasNext();) 
{ 
    System.out.println("#############"+iter.next()); 
} 
System.out.println("**************** player name : " + mapPlayer.getProperties().get("name", String.class)); 
RectangleMapObject rect = (RectangleMapObject) mapObject.get("player"); 
float x = (float) rect.getRectangle().x; 
float y = (float) rect.getRectangle().y; 
float width = rect.getRectangle().width; 
float height = rect.getRectangle().height; 

System.out.println("**************** player coordinates X : " +x); 
System.out.println("**************** player coordinates Y: "+y); 
System.out.println("**************** player coordinates width : " +width); 
System.out.println("**************** player coordinates height: "+height); 
System.out.println("**************** player coordinates X : " +mapPlayer.getProperties().get("x", Integer.class)); 
System.out.println("**************** player coordinates Y: "+mapPlayer.getProperties().get("y", Integer.class)); 
System.out.println("**************** player velocity : "+mapPlayer.getProperties().get("velocity", Integer.class)); 
####### largeur ####### Nom ####### nom ### #### id vitesse ####### ####### ####### hauteur x ####### y type #######

**************** nom du joueur: Ahhhh ******** coordonnées joueur ******** X: 256,0 **************** joueur coordonnées Y: 3318,0 ************** ** joueur coordonnées largeur: 1290,0 **************** joueur coordonnées hauteur: 1290,0 **************** joueur coordonnées X: 256,0 **************** joueur coordonnées Y: 3318,0 vitesse du **************** joueur: 1,0

Pourquoi Y n'a pas montré la valeur correcte?

Merci

Répondre

1

Il est probablement parce que libgdx a l'axe Y dans l'autre sens (vers le haut au lieu de vers le bas comme carrelées) et essaie d'être utile en convertissant automatiquement les coordonnées Y dans son propre espace de coordonnées lors du chargement la carte.

+0

Exactement, c'est la raison. Je ne comprenais pas car il est facile de comprendre si la largeur et la hauteur sont un multiple de carreaux (256 dans mon cas), mais si elle est une autre valeur, il peut être plus complexe. Evidemment Y est inversé. Merci. – Furby