声明:
本系列文章使用的Libgdx版本均为0.99版本
Libgdx游戏开发交流群 323876830
本篇,我们将开启地图绘制部分, 包含垂直视角,45°视角地图的绘制,地图的移动,放缩等等。
Libgdx包含了许多关于地图绘制的Api,com.badlogic.gdx.maps在这个包中都可以找到。
下面介绍一下有关地图方面的关键信息
Properties属性信息
地图的,图层的和对象的属性都是放在一个叫做MapProperties的对象中, 他其实是一个hash表,以键值对的形式存在,
类似于
map.getProperties().get("custom-property", String.class); layer.getProperties().get("another-property", Float.class); object.getProperties().get("foo", Boolean.class);
地图图层
可以根据索引或者是名称来取得一个图层
MapLayer layer = map.getLayers().get(0); MapLayer layer = map.getLayers().get("my-layer");
图层的信息也可以获取到
String name = layer.getName(); float opacity = layer.getOpacity(); boolean isVisible = layer.isVisible();
地图对象
MapObjects objects = layer.getObjects();
可以取得指定图层的对象列表
还有一些属性信息
String name = object.getName(); float opacity = object.getOpacity(); boolean isVisible = object.isVisible(); Color color = object.getColor();
地图绘制器
MapRenderer,他允许我们绘制地图中的图层,对象。
在我们绘制之间,我们需要设置一下镜头或者矩阵信息
mapRenderer.setView(camera);
或者
mapRenderer.setView(projectionMatrix, startX, startY, endx, endY);
绘制的话,可以简单的这样
mapRenderer.render();
也可以自己控制,绘制哪一层,或者夹杂着其他对象绘制
int[] backgroundLayers = { 0, 1 }; // don't allocate every frame! int[] foregroundLayers = { 2 }; // don't allocate every frame! mapRenderer.render(backgroundLayers); renderMyCustomSprites(); mapRenderer.render(foregroundLayers);
在Libgdx提供的地图工具中, Tiled 和 Tide编辑器是比较好的支持的,尤其是Tiled编辑器。下面我们重点
使用Tiled编辑器来开始我们的地图学习之旅。
我们在Tiled中来编辑我们的地图,导出为tmx格式。
在程序中使用TmxMapLoader来导入文件生成TiledMap对象
TiledMap map = new TmxMapLoader().load("micro.tmx");
调整镜头大小
mCamera = new OrthographicCamera(800, 480);
根据地图信息生成一个正投射图块地图绘制对象
mMapRenderer = new OrthogonalTiledMapRenderer(map);
这里要注意下,在opengl中没有像素的概念的, 都是1个单位,具体这个单位包含多少像素
,这个需要我们来设定,就是一个比例,默认是1个像素一个单位。
public OrthogonalTiledMapRenderer(TiledMap map, float unitScale)
上面这个是可以设置像素比的。
设置镜头的宽和高的单位
mCamera.setToOrtho(false, 800, 480);
上面这个800和480是以单位来计算的。 因为这里设置了1个单位=1像素, 所以值恰好一致。
在render中
镜头更新
mCamera.update();
设置镜头
mMapRenderer.setView(mCamera);
下面就是绘制了, 这里把所有的都绘制了
mMapRenderer.render();
下面是例子的截图
项目下载地址
转载请链接原文地址 http://blog.csdn.net/wu928320442/article/details/17225695