Libgdx专题系列:地图篇 地图的绘制
来源:互联网 发布:乔任梁网络暴力议论文 编辑:程序博客网 时间:2024/06/07 01:51
声明:
本系列文章使用的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
- Libgdx专题系列:地图篇 地图的绘制
- Libgdx专题系列:地图篇 地图移动
- Libgdx专题系列:地图篇 斜45°地图
- Libgdx专题系列:对象篇 简单绘制
- Libgdx专题系列:对象篇 Sprite精灵的使用
- 【 D3.js 入门系列 --- 10 】 地图的绘制
- (libgdx小结)游戏地图
- libgdx 之 tiled地图
- libGdx地图编辑api
- Libgdx专题系列:对象篇 Action动作
- Libgdx专题系列:对象篇 Animation动画
- Libgdx专题系列:物理引擎篇 Box2D
- Libgdx专题系列:实例篇 打飞机
- Libgdx专题系列:物理引擎篇 Box2D
- Libgdx专题系列:序言
- 地图的设计与绘制
- mapxtreme的地图绘制概念
- 杭州地图的绘制matlab
- coursera作业之(集合)函数对象
- How to Create a SharePoint 2010 Project Without SharePoint Server
- .Net编译后处理(寻址范围)
- Oracle笔记:用户、权限及exp/imp数据
- 自定义Dialog
- Libgdx专题系列:地图篇 地图的绘制
- http://wenwen.51.com/293285427-186.html
- 如何选择RIA技术
- PHP-YAF 的 PPA 源
- 上下左右 键控制人移动
- [UIImage resizableImageWithCapInsets:] 函数说明
- EGOTableViewPullRefresh实现下拉刷新
- java之String,StringBulider,StringBuffer的比较
- DWR3.0框架入门(1) —— 实现ajax