我正在制作基于平铺地图的回合制策略。我的地图包含两个图层 - 第一个图层始终可见,用作背景,第二个图层用于突出显示图块。突出显示的瓷砖显示玩家可能的移动。目前进展情况如下:
为了突出显示,我将其用于循环:
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。选择/取消选择图块效果很好,但它可能不是最有效的方法。我想将蓝色边框交换成彩色透明盒子,就像运动中的预先战争一样,或者可以在下面看到:
我尝试在平铺的第二层上制作半透明的瓷砖,但没有运气。如果有可能在特定图块上仅应用半透明颜色,而不使用第二层图块,则可能会很好。所以,我的问题是 - 如何将这些丑陋的边框交换成全彩色(半)透明瓷砖,以达到与上图相似的效果?
答案 0 :(得分:0)
好......好吧。我不是Tiled的专家。我从来没有真正使用它,但它不支持PNG tilemap导入?在...中制作一个半透明的瓷砖纹理,然后在第二层的地图中使用它,只激活你真正需要的那个?
或者你可以通过编程方式完成。对于需要突出显示的每个图块,只需使用图块的coortinates创建一个新的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/hex/R2HexMapRenderer.java#L167
希望这会有所帮助。