zoukankan      html  css  js  c++  java
  • 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界

    欢迎来到RPG的世界

    本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界。

    创建并编辑瓷砖地图

    瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,libGDX支持它并实现了动态瓷砖效果(比如流动的海水),基于资源利用的角度考虑,瓷砖地图也是rpg游戏的首选地图格式。

    首先我们需要瓷砖地图编辑器作为我们的第一把斧子。虽然有许多不同类型的瓷砖编辑器,但主要常用的就两个:

    • Tiled: 这是一个免费的持续维护的tile-based编辑器. 我在项目里用这个.

    下载地址 http://www.mapeditor.org/download.html

    • Tide: 这个是用Microsoft XNA库建的免费编辑器. 它的目标平台是Windows, Xbox 360和Windows Phone 7.

    下载地址 http://tide.codeplex.com/releases.

    图一显示了我们创建的雅卡港的效果图

    我们的故事将全部发生在这个港口,这个图很大,为了展示全景,这里进行了缩小显示:

     

    雅卡港的全景图

    雅卡港中间有个2层的旅馆,我们将让室内故事在这里发生,旅馆第一层的效果图:

     

    旅馆一层

    然后是旅馆第二层的效果图,在这里我们会和妹子有亲密接触:

     

    旅馆二层

    编辑地图的过程

    正如之前所说,这个游戏的资源全部来自于《圣剑英雄传》,所以这里对素材的处理过程没有讲,这完全是个体力活,在我开源的git都有。这里仅仅展示一下编辑器在编辑地图完成时的情景。

    加载贴图和瓷砖地图,实现资源管理

    大家直接去我的工程去git源码看:

    https://github.com/Mignet/Inspiration/tree/v1.0

    实现相机并在渲染中显示地图

    我将通俗的讲一讲libGDX中与渲染相关的概念:

     

    该图来自于网络

    • Camera (1): 

    摄像机:相比拍摄电影的摄像机,libGDX中的Camera更类似于一个针孔照相机。拍电影的摄像机是通过凸透镜聚焦光线将图像映射到感光介质上,形成可播放的影片。而针孔照相机是一个简单的不透光的盒子,没有镜头。这个相机允许光通过一个小洞,一个光圈或针孔,投射图像到另一边。图中展示的相机是OrthographicCamera (也称为正交或平行相机),它通过正交投影来表示在二维空间中的三维对象。

    • Near clipping plane (2): 

    近裁剪平面:这是最靠近摄像机的平面。在摄像机视角中,靠近这个平面的对象将比远离它的要大。在正交摄像机中,无论你怎么调整对象和正交投影相机的距离,对象将显现相同的大小。

    • Far clipping plane (3): 

    远裁剪平面:这是最远离摄像机的平面。在摄像机视角中,靠近这个平面的对象将比远离它的要小。在正交摄像机中,对象将显现相同的大小,无论你怎么调整对象和正交投影相机的距离。

    • View frustum (4): 

    视锥体:这是一个由远近裁剪平面包裹的长方锥体。任何在这个体积之内,包括部分相交的对象,将渲染到屏幕上。这个体积以外的其他所有东东将不会呈现。这也被称为裁剪。裁剪有一个z顺序(深度),方向是从远裁剪平面到近裁剪平面。

    • Orthographic projection of a sprite (5): 

    精灵的正交投影:一个平面2D的图像代表的精灵,在渲染时的样子

    • Viewport (6): 

    视口:这是一个2d矩形区域,用于投射3d屏幕相对于摄像机的坐标。在LibGDX中,视口宽度和高度的原点定位在中间位置。图中显示的是宽高10个单位y轴向上的视口。我们可以看到相应的位置值变化取决于我们正方向。

    • Coordinate system (7): 

    坐标系:LibGDX的坐标系是左下,这意味着原点坐标点(0,0)位于左下角的角落与y轴向上。

    • Map screen (8): 

    地图屏幕:这是我们用正交地图渲染类OrthogonalTiledMapRenderer渲染到屏幕上的瓷砖(TMX格式)地图的样子。

    第一章先到这里。

  • 相关阅读:
    在DataGrid中创建一个点击列名时的弹出式窗口
    利用自定义事件实现不同窗体间的通讯 C#篇
    用javascript实现禁用鼠标右键
    刷新页面时,防止滚动条上滚
    web服务编程
    数据库链接Connection和DataReader的关闭
    .NET的WEB商业应用架构所要解决的若干
    zblog屏蔽分类文章
    过年随想
    mysql数据库文件的真实的物理存储位置
  • 原文地址:https://www.cnblogs.com/mignet/p/ligbdx_rpg_01.html
Copyright © 2011-2022 走看看