0

我正在根据平铺地图制定基于回合的策略。我的地图包含两层 - 第一个始终可见并用作背景,第二个用于突出显示图块。突出显示的图块显示玩家可能的移动。目前进展如下:

我的边框图片

为了使突出显示成为可能,我使用了这个 for 循环:

for(int s = 0;s<7;){ for (int i = 0;i<7;i++) { if ((inField(clickx + i,clicky + s)) && !(tileWithPlayer(clickx + i,clicky + s))) { highlight_layer.getCell(clickx + i, clicky+s).setTile(mark); } } s++; }

在此,我使用地图第二层的一个图块为特定图块制作边框。现在这个图块只是 32x32 透明图块的 2px 边框。为了使突出显示消失,我使用了类似的 for 循环,我将 tile 设置为 null。选择/取消选择瓷砖效果很好,但这可能不是最有效的方法。我想将蓝色边框框换成彩色透明框,就像在移动期间的高级战争中一样,或者如下所示:

想要的样子图片

我试图在平铺的第二层上制作一个半透明的瓷砖,但没有运气。如果有可能在特定图块上仅应用半透明颜色而不使用第二层图块,那就太好了。所以,我的问题是 - 我怎样才能将那些丑陋的边框换成全彩色的(半)透明瓷砖,以达到与上图相似的结果?

4

1 回答 1

0

哦,那好吧。我不是 Tiled 的专家。我从来没有真正使用过它,但它不支持 PNG tilemap 导入吗?如...制作一个半透明的瓷砖纹理,然后在第二层的地图中使用它,只激活你真正需要的那些?

或者,您可以以编程方式进行。对于您需要突出显示的每个图块,您只需使用图块的坐标创建一个新的 TextureRegion:

    float x = tileWidth * col;
    float y = tileHight * row;

    final TextureRegion region = Assets.getRegion(...);

这样,您可以在需要时加载要在正确位置显示的纹理区域。你甚至可以(如果范围永远不会改变)将它们存储在一个集合中,然后随着每一步的移动,它们的坐标在任何方向上都会移动一个。

这至少是我的方法,对 Tiled 一无所知。

我以前使用过 HexagonTile 地图,但是我必须编写自己的实现(基于 LibGDX)。这是代码,以防它帮助您进一步理解这个想法:https ://github.com/2RSoftworks/interstellarempires/blob/master/IEMaster/IEClient/src/main/de/r2soft/empires/client/maps/十六进制/R2HexMapRenderer.java#L167

希望这有帮助。

于 2014-11-28T16:18:48.460 回答