如何在LibGDX的Tile Map中突出显示某些单元格?

时间:2018-02-22 22:46:13

标签: java libgdx

我使用LibGDX编写策略RPG,并将其平铺为地图编辑器。我正在使用资产管理器加载Tiled地图,现在我没有纹理图集(我不太确定是否是我的权威纹理)。

如果您熟悉策略RPG游戏,您应该知道当您想要移动角色时,可以移动它的单元格会改变颜色。这就是我想要做的事情。

但在确定之前,我试图点击一个单元格并通过更改该单元格上层的纹理来改变它的颜色,并使用以下代码:

TiledMapTileLayer.Cell selectedCell = new TiledMapTileLayer.Cell();
selectedCell.setTile(selectedTileSet.getTile(0));
StaticTiledMapTile selectedTile = new StaticTiledMapTile(selectedSpriteRegion);
selectedCell.setTile(selectedTile);
selectedTileLayer.setCell((int) Math.floor(screenX / 32), (int) Math.floor((viewport.getScreenHeight() - screenY / 32)), selectedCell);

该代码位于TouchDown内的Screen内,每次触摸Screen的一部分时都会调用。

我使用的图层是我专门为突出显示的图块设置的图层,它在我的代码中的其他图层上方,除了包含字符的图层。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我发现了错误。

这是新代码:

TiledMapTileLayer.Cell selectedCell = new TiledMapTileLayer.Cell();
selectedCell.setTile(selectedTileSet.getTile(1765));
StaticTiledMapTile selectedTile = new StaticTiledMapTile(selectedSpriteRegion);
selectedCell.setTile(selectedTile);
selectedTileLayer.setCell(screenX / 32, (viewport.getScreenHeight() - screenY) / 32, selectedCell);

所以有两个错误。首先,瓷砖的id是错误的。我认为,因为我有一个瓷砖,它将是零,但不,它是1765(不要问我为什么)。

另外,由于我使用的公式错误,我设置了错误的单元格。 Math.floor没有必要,我在减去Y位置之前就分开了(不能相信我这样做了)。

这就是全部!希望这对将来有类似错误的人有所帮助!