如何在 libgdx 中获取分块地图单元格的位置
How to get the position of a tiledmap cell in libgdx
我有一个等距平铺地图,我想获取屏幕中给定单元格的位置 (x, y)。这可能吗?
cell = ((TiledMapTileLayer) map.getLayers().get(0)).getCell(0, 0);
如何获取此单元格的位置以便在其上放置精灵?
这是一个简单的测试。
public void chageTile(float xActor, float yActor){
int tiledPx = 32; //yourPixelPerTile.
int ajusteX = xActor / tiledPx;
int ajusteY = yActor / tiledPx;
//get(0) is layer 0 in your tilemap
TiledMapTileLayer tileid = (TiledMapTileLayer)mapActual.getLayers().get(0);
TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell();
//mapActual is your reference a your mapTile
//MoldeTileSet is a name of the tileset in your map
// and getTile(3) is a numbre 3 of de tileset image
cell.setTile(mapActual.getTileSets().getTileSet("MoldeTileSet").getTile(3));
Gdx.app.log("ChangeTileInPosPlayer", "");
tileid.setCell(ajusteX, ajusteY, cell);
Gdx.app.log("ChangeTileInPosPlayer", "ajusteY +1");
tileid.setCell(ajusteX, ajusteY + 1, cell);
}
您可能想要使用 propiedes 等过滤您想要更改的图块,因此这不是 null 或任何东西
if (tileid.getCell(ajusteX, ajusteY).getTile().
getProperties().get("YourNameInTilePropertires", String.class) != null ){
tileid.setCell(ajusteX, ajusteY, cell);
}
如果您有任何错误或不工作警告,呃我现在无法测试,我希望能有所帮助。
P.S:这或多或少是什么,我用于正交瓷砖,从未使用过瓷砖等距测试,我认为它可以工作或大致相等。
我最终制作了一个解析器,该解析器将分块文件导出为 JSON,并将每个分块导入为扩展的 scene2D actor,它具有我需要的所有方法和变量。我什至可以解析图块信息,例如图块集的地形类型或图块的高度(我正在使用具有多个高度级别的等距地图)
我认为这是我的最佳解决方案。我没有发布任何代码,因为它非常具体,所以如果有人想使用这种方法,你必须研究你生成的 json 文件才能正确解析它。不管怎样,如果有人需要它作为参考,请给我发邮件。[=10=]
我有一个等距平铺地图,我想获取屏幕中给定单元格的位置 (x, y)。这可能吗?
cell = ((TiledMapTileLayer) map.getLayers().get(0)).getCell(0, 0);
如何获取此单元格的位置以便在其上放置精灵?
这是一个简单的测试。
public void chageTile(float xActor, float yActor){
int tiledPx = 32; //yourPixelPerTile.
int ajusteX = xActor / tiledPx;
int ajusteY = yActor / tiledPx;
//get(0) is layer 0 in your tilemap
TiledMapTileLayer tileid = (TiledMapTileLayer)mapActual.getLayers().get(0);
TiledMapTileLayer.Cell cell = new TiledMapTileLayer.Cell();
//mapActual is your reference a your mapTile
//MoldeTileSet is a name of the tileset in your map
// and getTile(3) is a numbre 3 of de tileset image
cell.setTile(mapActual.getTileSets().getTileSet("MoldeTileSet").getTile(3));
Gdx.app.log("ChangeTileInPosPlayer", "");
tileid.setCell(ajusteX, ajusteY, cell);
Gdx.app.log("ChangeTileInPosPlayer", "ajusteY +1");
tileid.setCell(ajusteX, ajusteY + 1, cell);
}
您可能想要使用 propiedes 等过滤您想要更改的图块,因此这不是 null 或任何东西
if (tileid.getCell(ajusteX, ajusteY).getTile().
getProperties().get("YourNameInTilePropertires", String.class) != null ){
tileid.setCell(ajusteX, ajusteY, cell);
}
如果您有任何错误或不工作警告,呃我现在无法测试,我希望能有所帮助。
P.S:这或多或少是什么,我用于正交瓷砖,从未使用过瓷砖等距测试,我认为它可以工作或大致相等。
我最终制作了一个解析器,该解析器将分块文件导出为 JSON,并将每个分块导入为扩展的 scene2D actor,它具有我需要的所有方法和变量。我什至可以解析图块信息,例如图块集的地形类型或图块的高度(我正在使用具有多个高度级别的等距地图)
我认为这是我的最佳解决方案。我没有发布任何代码,因为它非常具体,所以如果有人想使用这种方法,你必须研究你生成的 json 文件才能正确解析它。不管怎样,如果有人需要它作为参考,请给我发邮件。[=10=]