我有一个等距的平铺地图,我想获得屏幕中给定单元格的位置(x,y)。这可能吗?
cell = ((TiledMapTileLayer) map.getLayers().get(0)).getCell(0, 0);
如何获取此单元格的位置以便我可以在其上放置一个精灵?
答案 0 :(得分:1)
这是一个简单的测试。
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:这或多或少是什么,我用于ortogonal tile,从未使用过测试用于平铺等距,我认为它可以工作或者或多或少相等。
答案 1 :(得分:0)
我最终创建了一个解析器,它将平铺文件导出为JSON,并将每个tile导入为扩展的scene2D actor,其中包含我需要的所有方法和变量。我甚至可以解析瓷砖信息,例如瓷砖组的地形类型或瓷砖的高度(我使用的是具有多个高度等级的等距地图)
我认为这是我个案中最好的解决方案。我没有发布任何代码,因为它非常具体,所以如果有人想要使用这种方法,你必须研究你生成的json文件才能正确解析它。无论如何,如果有人需要它作为参考,请给我发一封电子邮件。