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)"