2016-03-01 10 views
2

У меня странный ответ с getProperties().get("value").Libgdx getProperties(). Get ("value") дает мне странный ответ

Ниже вы можете увидеть мои tmx file и значения, предоставленные моей программой.

<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> 

Исходный код

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)); 
####### ширина ####### имя ####### ном ### #### ID скорость ####### ####### высота ####### х ####### y ####### Тип

**************** имя игрока: Ahhhh ******** ******** координаты игрока X: 256.0 **************** Координаты игрока Y: 3318.0 ************** ** Координаты игрока ширина: 1290.0 **************** Координаты игрока высота: 1290.0 **************** Координаты игрока X: 256,0 **************** игрок координаты Y: 3318,0 **************** игрок скорость: 1,0

Почему Y не показывает правильное значение?

Благодаря

ответ

1

Это, вероятно, потому, что libgdx имеет ось Y другой путь вокруг (направлен вверх, а не вниз, как в Tiled) и пытается быть полезным, автоматически преобразуя Y координаты в свое собственное координатное пространство при загрузке карта.

+0

Именно по этой причине. Я не понял, потому что легко понять, является ли ширина и высота чередованием нескольких (256 в моем случае), но если это другое значение, это может быть более сложным. Очевидно, что Y инвертирован. Благодарю. – Furby