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

MapObject in libGDX+Tiled : Set the object properties, not the custom object properties?

我加载 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。

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

原来你需要根据你的对象类型进行转换才能访问对象属性;我的对象都是一个 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);

最后我就是这样解决(理解)的