首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapObject in libGDX+Tiled :设置对象属性,而不是自定义对象属性?

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

Stack Overflow用户
提问于 2017-07-14 15:36:02
回答 1查看 354关注 0票数 0

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

我想把其中一个物体复制到第二张平铺地图上的另一个地方。

代码语言:javascript
复制
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,正如我所相信的。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-14 19:22:57

结果表明,您需要根据对象类型进行强制转换,以访问对象属性;我的对象每个都是一个64x64矩形;

代码语言:javascript
复制
((RectangleMapObject) npcs[0]).getRectangle().setX(0);
((RectangleMapObject) npcs[0]).getRectangle().setY(0);
secondMap.getLayers().get("NPC").getObjects().add(npcs[0]);

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

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

代码语言:javascript
复制
RectangleMapObject object = new RectangleMapObject();
object.getProperties().putAll(npcs[0].getProperties());
object.getRectangle().set(0,0,64,64);
secondMap.getLayers().get("NPC").getObjects().add(object);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45106811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档