【问题标题】:MapObject in libGDX+Tiled : Set the object properties, not the custom object properties?libGDX+Tiled 中的 MapObject :设置对象属性,而不是自定义对象属性?
【发布时间】:2017-12-19 18:45:44
【问题描述】:

我加载TiledMap map,然后将所有MapObjects加载到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,我相信。

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

【问题讨论】:

    标签: java libgdx tiled


    【解决方案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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2022-01-23
      • 2020-06-20
      • 1970-01-01
      • 2012-07-08
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多