Libgdx专题系列:地图篇 地图的绘制

声明:

本系列文章使用的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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
tIDE是多国语言的免费软件,但是!竟然没有中文,关于它的介绍自己看就不说了,下面来创建第一张地图,用于我们的TD游戏。 你现在需要一张这样的tile图片,来做完地图的基本元件 在Explorer面板Map节点地下的Tile Sheets右键Add,然后浏览选择上面的或者你自己的tile文件。 OK弹出Tile Sheet Properties对话框设置一下Tile Size让Tile完美的切割。这里的值是60x60。 ok,然后会在Tile picher面板里就会出现一个个分割好的Tile。 有了这些tile的支持就可以在map上玩拼图了。在map Explorer面板下的Map节点的Layers上右键Add,在弹出的Layer Properties设置地图的大小Layer Size,因为我现在只打算做一个最简单的也就是一屏幕而且不能拖动所以这里设置14x8 (800/60 x 480/60),OK。 为了方便绘制在工具面板的右上角有一个显示网格的按钮,点下去它 右边的绘图工具栏上有一个很好使用的按钮区域绘制,它能把选择区域填充出当前选择的tile,下面就先在tile Picker选择一块浅色的草地区域绘制到整个地图。然后画上我们的路。 Save as为 tmx类型的文件 中间如果出现警告确定就好了 这里出现了最关键的一步,这里一定要选Base64(gzip compressed),ccx现在的版本还只支持这一种。 把生成的tmx文件以及tile图片加入我们的项目中。 这里可能需要调整一下tmx文件中的Image source的路径 在程序中显示TMX地图 先显示出来看看努力的效果,之后再慢慢完善。 把GameScreen构造函数中的说明Label删除,添加CCTMXTiledMap 代码很简单如下 private GameScreen() { CCTMXTiledMap tmxmap = CCTMXTiledMap.tiledMapWithTMXFile("Map/Level1"); addChild(tmxmap); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值