最近周末有空試了試libgdx這個游戲引擎,本來呢看了也看了別的引擎比如JME,F(xiàn)XGL這些。JME看起來社區(qū)沒libgdx活躍。fxgl是個教學(xué)項目。所以還是專注看libgdx吧。至于cocos2d和U3d呢開發(fā)語言是C++,雖然會但是不精通,還是省點腦細(xì)胞吧。
進(jìn)入正題,libgdx中Map這個類是地圖的超類。Map中的結(jié)構(gòu)很簡單。Map,Layers,Layer,MapObjects,MapObject這幾個類描述了地圖的圖層和元素。當(dāng)然一般我們開發(fā)的時候一般使用瓦片地圖 TiledMap 。 我們詳細(xì)講這個。
地圖編輯器
可以使用這個地圖編輯器,免費(fèi)的 介紹 — Tiled
加載地圖
地圖編輯好之后,保存得到一個tmx文件(可能還有圖塊文件),加載到程序中。
private final TiledMap map;
private final TmxMapLoader loader;
private HexagonalTiledMapRenderer renderer;
private OrthographicCamera camera;
private Viewport viewport;
// 加載地圖
loader = new TmxMapLoader();
map = loader.load("map/hex.tmx");
renderer = new HexagonalTiledMapRenderer(map);
渲染地圖
渲染地圖需要用到 TiledMapRenderer, 注意的是不同的圖類型需要使用不同的TiledMapRenderer實現(xiàn),否則地圖顯示會有問題。我在這里就遇到了坑,用正常的平鋪渲染器渲染六邊形地圖就顯示異常。
還有一個點是如果需要渲染自定義的地圖對象,比如在加載地圖之后想要增加一些自定義的MapObject進(jìn)去,這時候需要實現(xiàn)使用的地圖渲染器的renderObject方法,TiledMapRenderer默認(rèn)是不實現(xiàn)這個方法的。
至于渲染地圖時坐標(biāo)的問題,后面有時間再研究。