这里的答案正是我所寻找的,是将瓷砖变成演员的好方法。
LibGDX: How to make tiled map tiles clickable?
我有一个问题,那就是它似乎只在一个层上工作。从代码看起来它应该循环并处理所有层,但似乎并非如此。
我现在的问题是,如果我在平铺的主图层顶部添加第二层,它只会“看到”该图层。它适用于一层。
编辑:两个图层都将以可视方式显示,但我只能与顶层进行交互。最好的事情是,如果我可以在制作演员时忽略我的顶层,因为它主要用于透明瓷砖和类似的东西。
答案 0 :(得分:1)
如果你把两个演员放在一起,鼠标点击只会发到最顶层的一个?在这种情况下,您只需要创建一层actor(或者甚至只有一个actor用于整个地图),然后在其clicked
覆盖中找出您想要处理的图块/图层。 / p>
答案 1 :(得分:1)
根据该示例文章(LibGDX: How to make tiled map tiles clickable?),您可以执行以下操作之一:
1)强制所有顶层单元格使用IgnoreTileListener(如下所述)
2)假设您正在使用静态平铺贴图,或者可以在平铺单元格对象中添加字段,请添加名为'忽略'的布尔字段。然后在调用TiledMapStage.createActorsForLayer()时,检查单元格是否被忽略并使用它来确定是否使用IgnoreTileListener或现有的TiledMapClickListener
连接其actor。" IgnoreTileListener"您可以选择InputListener或ClickListener,但是您将覆盖IgnoreTileListener上的touchDown(),这样您就可以强制返回false,从而使事件处于未处理状态,以便您所需的actor可以监听事件。
无论哪种方式,您都可以有效地使用InputListener,因为无论如何ClickListener都继承自InputListener。
无论您最终使用什么来获得所需的输出,我都很想听(特别是如果你最终使用这种方法!)
答案 2 :(得分:0)
你调试了应用程序吗?您的代码是否无法为每个图层生成actor,或者只是单击底层的问题?我不确定你链接的代码是否真的检查在创建演员之前当前位置是否有一个单元格。