如何在 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=]