Skip to content Skip to sidebar Skip to footer

Cannot Render .tmx Map Using OrthogonalTiledMapRenderer (Android)

I am having a hard time getting a map to display correctly on my android app using LibGdx. First up here is my code: public class PlayState extends State { private LittleMan litt

Solution 1:

Set Camera ViewPort according to your map like this.

TmxMapLoader loader = new TmxMapLoader();
map = loader.load("ste_barbe_map.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(map);
TiledMapTileLayer layer=(TiledMapTileLayer)map.getLayers().get(0);

float w=layer.getTileWidth()*layer.getWidth();   // 100*34
float h=layer.getTileHeight()*layer.getHeight();  // 100*34

camera=new OrthographicCamera(w,h);
// you can manually set camera viewport 
//camera=new OrthographicCamera(100*34,100*34);

You can also try this

camera=new OrthographicCamera(34,34);
float unitScale = 1 / 100f;
OrthogonalTiledMapRenderer renderer = new OrthogonalTiledMapRenderer(map, unitScale);

Get more how unitScale works :
https://github.com/libgdx/libgdx/wiki/Tile-maps#rendering-tiled-maps

EDIT

I checked .tmx file, it has 3 layer. There is a TiledMapImageLayer at 0 index that's why it give you cast error. At index 1 and 2 there is TiledMapTileLayer so get layer from index 1.

I tried to load your .tmx in my code and it render on display.

public class TestGame extends Game {

    TiledMap map;
    OrthographicCamera camera;
    TiledMapRenderer tiledMapRenderer;

    @Override
    public void create() {

        TmxMapLoader tmxMapLoader=new TmxMapLoader();

        map=tmxMapLoader.load("ste_barbe_map.tmx");

        TiledMapTileLayer layer=(TiledMapTileLayer) map.getLayers().get(1);

        tiledMapRenderer= new OrthogonalTiledMapRenderer(map);
        camera=new OrthographicCamera();
        camera.update();
        float widthHeightRatio=1.66f; 
        camera.setToOrtho(false,(layer.getWidth()*layer.getTileWidth())/widthHeightRatio,layer.getHeight()*layer.getTileHeight());
    }

    @Override
    public void render() {

        Gdx.gl.glClearColor(1,0,0,1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        camera.update();
        tiledMapRenderer.setView(camera);
        tiledMapRenderer.render();
    }
}

Map having same number of tile in horizontal and in vertical. Your game will be either in landscape or portrait so keep a ratio for this like(for landscape 25 tile in horizontal and 15 tile in vertical).

widthHeightRatio become 1 if you maintain ratio.


Post a Comment for "Cannot Render .tmx Map Using OrthogonalTiledMapRenderer (Android)"