`
macken
  • 浏览: 344955 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

libgdx学习之TiledMap(一)

    博客分类:
  • game
阅读更多

       libgdx自0.9.8版本开始对tile map的读取重新进行了实现,原来com.badlogic.gdx.graphics.g2d.tiled包下的类不在使用,新的map包位于com.badlogic.gdx.maps,增强了libgdx在地图方面的扩展性、灵活性。前后两种tile map的加载方式也有所区别。0.9.8之前的tiledmap加载方法请见博文:http://www.cnblogs.com/htynkn/archive/2012/01/13/libgdx_14.html

一、map类结构关系

代码见这里


可以继承map、maprenderer等实现自己的地图结构

 

二、tmx文件结构

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="13" height="8" tilewidth="64" tileheight="64">
 <tileset firstgid="1" name="grass_ground" tilewidth="64" tileheight="64">
  <image source="grass_ground.png" trans="000000" width="512" height="512"/>
  <tile id="56">
   <properties>
    <property name="groupid" value="1"/>
   </properties>
  </tile>
  <tile id="57">
   <properties>
    <property name="groupid" value="2"/>
   </properties>
  </tile>
  <tile id="60">
   <properties>
    <property name="groupid" value="1"/>
    <property name="targetid" value="2"/>
    <property name="unittype" value="hero"/>
   </properties>
  </tile>
  <tile id="61">
   <properties>
    <property name="groupid" value="2"/>
    <property name="targetid" value="1"/>
    <property name="unittype" value="hero"/>
   </properties>
  </tile>
 </tileset>
 <tileset firstgid="65" name="201201121554224250" tilewidth="64" tileheight="64">
  <image source="201201121554224250.png" width="321" height="242"/>
 </tileset>
 <layer name="ground" width="13" height="8">
  <data encoding="base64" compression="zlib">
   eJxd0NsKwkAMRdEB672KivggImpVBK2XVlv//8vcgRMIPiySyXQS0nVKKZcRtliF81C5xTE26KIO7ugpf2OPo3KrfdDHK3xT4qLcFBiEnoXe1Hq3Q4aTzuaBKyppQo8DZpj8zXaVYhPm2B4LTMOO3tvmn8M+fv/Uf8rDPr7jTTWfs0SLLzqKbahl4ndz/AA4bQ5u
  </data>
 </layer>
 <layer name="units" width="13" height="8">
  <data encoding="base64" compression="zlib">
   eJxjYCAdWJKo3ooCPbZEqrej0B5S9dALAACEqgK7
  </data>
 </layer>
 <objectgroup name="player" width="13" height="8"/>
 <objectgroup name="123" width="13" height="8">
  <object name="123" x="125" y="209" width="79" height="61"/>
  <object name="235" x="320" y="211">
   <polyline points="0,0 64,26 45,39 0,45 -3,0 8,26 -2,36"/>
  </object>
  <object name="568" x="400" y="286" width="58" height="52">
   <ellipse/>
  </object>
  <object name="123123" x="433" y="172">
   <polyline points="0,0 63,31 8,50 -1,-2"/>
  </object>
  <object name="sdf" x="526" y="270">
   <polygon points="0,0 -3,99 39,62 62,14 49,92"/>
  </object>
  <object name="wersf" gid="70" x="338" y="346"/>
 </objectgroup>
</map>

    tileset是Tile编辑器中的图块,一个图块是一个tileset,当地图中使用到一个tile时,会将该tile的数据加入到tileset中,每一个tile有一个id,多个图块的tile id是递增的。

    layer是Tile编辑器中的图层,一个地图有多个图层,一个图层是一个layer,图层中存放tile数据,并使用了编码和压缩格式,encoding,compression属性;

    objectgroup是Tile编辑器中的对象,一个objectgroup可以多个object,object有多种类型:polyline、ellipse、polygon等等,它们有不同的属性。

     

三、TiledMap类结构

com.badlogic.gdx.maps.tiled 包下类结构



 

TiledMap:继承Map类,表示整个tiledmap对象;

TiledMapTileSet:对应tmx文件中的图块,一个图块为一个TiledMapTileSet;

TiledMapTile:对应图块中的一个块,多个TileMapTile组成一个TiledMapTileSet;

TiledMapTileLayer:继承MayLayer类 对应tmx文件中的一个图层;

TiledMapTileSets:一个map中用到的所有TiledMapTileSet;

 

下面准备写一下TmxMapLoader和TiledMapRenderer

 

参考资料:https://code.google.com/p/libgdx/wiki/GraphicsTileMaps

      

 

 

  • 大小: 27.6 KB
  • 大小: 15.7 KB
分享到:
评论

相关推荐

    libgdx学习资料

    这个“libgdx学习资料”压缩包包含了丰富的资源,帮助你深入理解和掌握LibGDX的各个方面。 1. **基础知识**: - LibGDX是基于OpenGL的,它提供了对底层图形处理的高级抽象,简化了游戏渲染。 - 它的核心组件包括...

    Libgdx专题系列 斜45°地图

    通过深入学习和实践,开发者可以利用LibGDX创造出具有丰富视觉效果和互动性的2D游戏世界。提供的文件“LibgdxText_3”可能是这个专题系列的源代码或文档,可以帮助进一步理解和实现斜45°地图的细节。

    Libgdx第二篇第一节

    Libgdx是一个强大的开源游戏开发框架,用于创建跨平台的游戏。在“Libgdx第二篇第一节”中,我们将深入探讨地图绘制这一核心功能,这对于构建各种类型的游戏至关重要。Libgdx提供了丰富的API和工具,使得开发者能够...

    Tiles:学习 Libgdx

    Libgdx 是一个开源的游戏开发框架,主要用于创建跨平台的游戏应用。它支持Windows、Linux、Mac OS X、Android、iOS以及HTML5等多个平台。在Java编程语言的支持下,Libgdx为开发者提供了一系列强大的工具和库,使得...

    Java Game Development with LibGDX, 2nd Edition

    通过阅读《Java游戏开发实战LibGDX第二版》,读者将全面学习到如何使用Java和LibGDX构建各种类型的游戏,从简单的2D平台游戏到复杂的3D项目,书中实例丰富,理论与实践相结合,是Java游戏开发者的宝贵参考资料。

    andriod libgdx 0.81

    10. **扩展库**:除了核心组件,LibGDX还有许多扩展库,如NinePatch、TiledMap、Json序列化库等,为开发者提供更多的工具和功能。 在使用LibGDX 0.81版本时,开发者需要注意的是,每个新版本可能引入新的特性、改进...

    libgdx-tower-defense:游戏开发项目 - 塔防

    在LibGDX中,我们可以使用Tiled Map Editor创建地图,并通过TiledMap类在游戏内加载和渲染。路径的生成可以通过A*寻路算法实现,确保敌人沿着预设路线行进。 2. **塔与敌人**:塔是玩家的主要防御手段,敌人则是...

    WarGame:用libgdx编写的Turn Base Grid Game

    《WarGame:libgdx构建的回合制网格游戏开发详解》 在IT行业中,游戏开发是一项充满挑战与创新的工作,而使用开源库libgdx进行游戏开发...对于希望学习游戏开发或者libgdx框架的开发者来说,这是一个很好的实践案例。

    ZombieRPG:LibGDX 2019年10月果酱

    《ZombieRPG:LibGDX 2019年10月果酱》是一款基于LibGDX框架开发的角色扮演游戏,展示了游戏开发者如何利用LibGDX这个强大的跨平台游戏开发库来构建一款僵尸主题的游戏。LibGDX是Java语言的一个开源游戏开发库,支持...

    tiled-qt游戏地图编译器

    Tiled-Qt支持多种地图格式,如TMX(Tiled Map eXtended)和TMX JSON,这些格式被广泛应用于各种游戏引擎和库,如LibGDX、Panda3D和Godot。通过TMX格式,开发者可以创建不同类型的层,包括图像层、对象层和地形层,...

Global site tag (gtag.js) - Google Analytics