【libGDX入門】TiledMapを描画しよう
TiledMapとは二次元のタイルをつなぎあわせて、簡単にマップを表現できるツールです。 TiledMapを作れるTiledMapEditorの使いかたは以下の記事を参照。
libGDXでの読込みと描画
libGDXでTiledMapを読み込んで、描画する方法を紹介します。
package com.mygdx.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapRenderer; import com.badlogic.gdx.maps.tiled.TmxMapLoader; import com.badlogic.gdx.maps.tiled.renderers.OrthoCachedTiledMapRenderer; import com.badlogic.gdx.utils.viewport.FillViewport; import com.badlogic.gdx.utils.viewport.Viewport; public class MyGdxGame extends ApplicationAdapter{ TiledMap tiledMap; TiledMapRenderer tiledRenderer; OrthographicCamera camera; Viewport viewport; public final int WIDTH = 480; public final int HEIGHT = 800; @Override public void create() { camera = new OrthographicCamera(); camera.setToOrtho(false, WIDTH, HEIGHT); viewport = new FillViewport(WIDTH, HEIGHT); viewport.setCamera(camera); /* TiledMapの読込みとRendererの初期化 */ tiledMap = new TmxMapLoader().load("map.tmx"); tiledRenderer = new OrthoCachedTiledMapRenderer(tiledMap); } @Override public void render() { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); /* TiledMapの描画 */ camera.update(); tiledRenderer.setView(camera); tiledRenderer.render(); if (Gdx.input.isTouched()){ camera.translate(100,0); } } @Override public void resize(int width, int height) { viewport.update(width,height); } }
上記のコードでは、タップする毎に、カメラが横に移動します。描画されるマップの位置が変わっていくことがわかると思います。
TileMapでは、以下のようにレイヤーやセルを取得したりすることもできます。
MapLayer layer = tiledMap.getLayers().get(0);
レイヤー毎に操作することで、例えば以下のように背景と前景の間に物体を描画したりすることができます。
int[] backgroundLayers = { 0, 1 }; // don't allocate every frame! int[] foregroundLayers = { 2 }; // don't allocate every frame! mapRenderer.render(backgroundLayers); renderMyCustomSprites(); mapRenderer.render(foregroundLayers);