平铺的MapObject大小

时间:2014-05-20 12:42:02

标签: map properties libgdx tiled

我正在通过TmxMapLoader加载Tiled地图,我可以毫无困难地获取tile等。但是当我想从Object Layer中提取值时,我只能使用以下代码获取x,y:

MapProperties props = layer.getObjects().get(i).getProperties();
float x = (float) props.get("x");
float y = (float) props.get("y");

这让我得到了正确的价值,但是当我尝试添加它时:

float width = (float) props.get("width");
float height = (float) props.get("height");

它抛出了这个错误:

Exception in thread "LWJGL Application" java.lang.NullPointerException
at cz.vilix.managers.MapManager.<init>(MapManager.java:67)
at cz.vilix.main.Game.create(Game.java:50)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

(MapManager中的第67行是我尝试获取宽度值的地方。)这对我来说似乎有点像,因为我可以从属性窗口中列出的对象属性中获取任何内容。 :

enter image description here

同样使用“Width”&amp; “高度”而不是“宽度”&amp; “身高”不起作用。

将类型更改为Object,如下所示:

Object width = props.get("Width");
Object height = props.get("Height");
System.out.println(width + " " + height);

打印:null null

1 个答案:

答案 0 :(得分:1)

有效的解决方案是获取RectangleMapObject(或任何其他形状),并使用以下代码获取基本Rectangle:Rectangle r = rect.getRectangle(),您可以使用Rectangle的参数。

或者您可以跳过创建新Rectangle对象的步骤,并在此代码中使用它:

RectangleMapObject rect = (RectangleMapObject) layer.getObjects().get(i);
float x = (float) rect.getRectangle().x;
float y = (float) rect.getRectangle().y;
float width = rect.getRectangle().width;
float height = rect.getRectangle().height;