如何在 LibGDX 中突出显示 Tile Map 中的某些单元格?
How can I highlight some cells in a Tile Map in LibGDX?
我正在使用 LibGDX 编写一个策略角色扮演游戏,并将 Tiled 作为地图编辑器。我正在使用 Asset Manager 加载 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);
该代码在 Screen
内的 TouchDown
内,每次我触摸 Screen
的一部分时都会调用该代码。
我使用的层是我专门为突出显示的图块设置的层,它在我的代码中的其余层之上,除了具有字符的层。
提前致谢!
我发现了错误。
这是新代码:
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 位置减去之前进行了除法(不敢相信我这样做了)。
就是这样!希望这对将来遇到类似错误的人有所帮助!
我正在使用 LibGDX 编写一个策略角色扮演游戏,并将 Tiled 作为地图编辑器。我正在使用 Asset Manager 加载 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);
该代码在 Screen
内的 TouchDown
内,每次我触摸 Screen
的一部分时都会调用该代码。
我使用的层是我专门为突出显示的图块设置的层,它在我的代码中的其余层之上,除了具有字符的层。
提前致谢!
我发现了错误。
这是新代码:
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 位置减去之前进行了除法(不敢相信我这样做了)。
就是这样!希望这对将来遇到类似错误的人有所帮助!