libGDX +中的MapObject:Tiled:设置对象属性,而不是自定义对象属性?

时间:2017-07-14 15:36:02

标签: java libgdx tiled

我加载了TiledMap map,然后将所有MapObject加载到MapObject[] npc

我想将其中一个对象复制到第二个平铺地图上的不同位置。

npcs[0].getProperties().put("X", 0);
npcs[0].getProperties().put("Y", 0);
secondMap.getLayers().get("NPC").getObjects().add(npcs[0]);

对象被放置,但前两行不会将X和Y属性更改为0,相反,它们会放置自定义属性X和Y,我相信。

enter image description here

这是我怀疑发生的事情。我如何编辑对象属性,而不是自定义?

1 个答案:

答案 0 :(得分:1)

事实证明,您需要根据对象类型进行转换以访问对象属性;我的对象每个都是64x64矩形;

((RectangleMapObject) npcs[0]).getRectangle().setX(0);
((RectangleMapObject) npcs[0]).getRectangle().setY(0);
secondMap.getLayers().get("NPC").getObjects().add(npcs[0]);

但是这只会引用相同的npc [0],如果我们尝试添加多个副本,它会将所有副本放到最后一个副本的位置;

每个新副本的含义,我们需要创建一个新的对象实例并复制其属性,然后简单地编辑不同的属性;在我的情况下坐标:

RectangleMapObject object = new RectangleMapObject();
object.getProperties().putAll(npcs[0].getProperties());
object.getRectangle().set(0,0,64,64);
secondMap.getLayers().get("NPC").getObjects().add(object);

这就是我最终设法解决(理解)它的方式。