地图编辑器功能
2009-07-19 12:45
134 查看
普通碰撞标记
如图所示,红色区域代表一个Tile,地图上每一个菱形空格代表一个区域(下文统一称为“地图片”),地图编辑器需要具备这样一种功能,就是标记哪些区域可以通过。
假设下图中蓝色外边框为屏幕边界,那么内部的菱形方片区域就可以看作是一个错开的二维数组(或者就是一个一维数组)。标记这些区域(地图片)也就很容易了,就像图中的蓝色标记连接成一条道路,到底是标记为0是道路,还是标记为1是道路其实并不重要,重要的是具有这样的功能。
标记好的地方需要做一个颜色标识,比如这个小菱形区域变成淡黄色半透明。再次点击这个地方,则取消标记。通常,会有一个提示光标跟随鼠标移动,在这个45度斜角地图中,提示光标显然也是菱形,这样更符合人们的习惯,值得注意的是,在这些菱形区域(地图片)中移动光标,需要一点技巧,因为我们希望光标自动对齐到每一个地图片,而不是跟随鼠标任意的移动,那么怎样判断鼠标当前是在哪一个地图片上呢?我用的方法很简单,就是使用三角函数计算出鼠标在当前位置的Tile上的区域(按对角线可以把一个Tile切分成上下左右四个三角形),进而推算出这个区域属于哪个地图片。这样就在不影响鼠标移动的情况下,自动让光标对齐到地图片了。
标记的信息将保存在地图文件的尾巴上。
地图模式选择
上图一个 45度斜角第三人称俯视 场景,这并非偶然,而是2.5D游戏的经典取景方式,显然,2.5D下的道路是斜方向排列的(但并非呈45度角),完全俯视的地图的道路则可能是横的或者是竖的,这是两种不同的地图排列,因此,编辑器中必须可以选择当前的地图模式(是否为45度斜角)。
节点和边
对于碰撞来说,你可以直接使用前面的标记来区分哪些区域不可行走,也可以使用节点和边的方式(没有节点存在的地方,显然就无法到达),这两个方式并不矛盾,也不多余,在通常情况下,仅仅使用标记判断是可以的,但对于需要有一定人工智能的情况就不够用了,你可能需要知道两个节点之间的移动代价,也可能希望根据需要来调整节点产生的密度(洪水填充法),因此两个功能并存是有必要的。
对于45度斜角地图,按照经典方式自动生成的节点和边看起来应该是这样:
对于纯的俯视地图则看起来和我们之前实现的一样,但需要注意的是,自动按经典方式生成节点的功能,应该自动按照每个地图片的坐标对齐到中间,而非经典方式产生的节点则需要按照设定的边长来产生节点,也就不用自动对齐了。
编辑器功能
编辑器一个常用的功能就是摆放固定的物体,通常的做法是贴一张图到地图上指定的位置就可以了,那么地图编辑器看起来可能如下:
Tile列表和物品列表都可以直接拖拉到地图中,Tile列表的内容从当前.map文件中自动分解而来,而物品列表则从当前应用程序目录的prop子目录中读取所有.png的图片得来(也就是说把每张图片作为一个物体)
地图的主要属性区,显示地图的尺寸,tile的数量等参数,可手动修改
如图所示,红色区域代表一个Tile,地图上每一个菱形空格代表一个区域(下文统一称为“地图片”),地图编辑器需要具备这样一种功能,就是标记哪些区域可以通过。
假设下图中蓝色外边框为屏幕边界,那么内部的菱形方片区域就可以看作是一个错开的二维数组(或者就是一个一维数组)。标记这些区域(地图片)也就很容易了,就像图中的蓝色标记连接成一条道路,到底是标记为0是道路,还是标记为1是道路其实并不重要,重要的是具有这样的功能。
标记好的地方需要做一个颜色标识,比如这个小菱形区域变成淡黄色半透明。再次点击这个地方,则取消标记。通常,会有一个提示光标跟随鼠标移动,在这个45度斜角地图中,提示光标显然也是菱形,这样更符合人们的习惯,值得注意的是,在这些菱形区域(地图片)中移动光标,需要一点技巧,因为我们希望光标自动对齐到每一个地图片,而不是跟随鼠标任意的移动,那么怎样判断鼠标当前是在哪一个地图片上呢?我用的方法很简单,就是使用三角函数计算出鼠标在当前位置的Tile上的区域(按对角线可以把一个Tile切分成上下左右四个三角形),进而推算出这个区域属于哪个地图片。这样就在不影响鼠标移动的情况下,自动让光标对齐到地图片了。
标记的信息将保存在地图文件的尾巴上。
地图模式选择
上图一个 45度斜角第三人称俯视 场景,这并非偶然,而是2.5D游戏的经典取景方式,显然,2.5D下的道路是斜方向排列的(但并非呈45度角),完全俯视的地图的道路则可能是横的或者是竖的,这是两种不同的地图排列,因此,编辑器中必须可以选择当前的地图模式(是否为45度斜角)。
节点和边
对于碰撞来说,你可以直接使用前面的标记来区分哪些区域不可行走,也可以使用节点和边的方式(没有节点存在的地方,显然就无法到达),这两个方式并不矛盾,也不多余,在通常情况下,仅仅使用标记判断是可以的,但对于需要有一定人工智能的情况就不够用了,你可能需要知道两个节点之间的移动代价,也可能希望根据需要来调整节点产生的密度(洪水填充法),因此两个功能并存是有必要的。
对于45度斜角地图,按照经典方式自动生成的节点和边看起来应该是这样:
对于纯的俯视地图则看起来和我们之前实现的一样,但需要注意的是,自动按经典方式生成节点的功能,应该自动按照每个地图片的坐标对齐到中间,而非经典方式产生的节点则需要按照设定的边长来产生节点,也就不用自动对齐了。
编辑器功能
编辑器一个常用的功能就是摆放固定的物体,通常的做法是贴一张图到地图上指定的位置就可以了,那么地图编辑器看起来可能如下:
Tile列表和物品列表都可以直接拖拉到地图中,Tile列表的内容从当前.map文件中自动分解而来,而物品列表则从当前应用程序目录的prop子目录中读取所有.png的图片得来(也就是说把每张图片作为一个物体)
地图的主要属性区,显示地图的尺寸,tile的数量等参数,可手动修改
相关文章推荐
- [发图留念]实现了地图编辑器的鼠标框选功能
- 基于mapnik的地图符号编辑器功能介绍
- android+高德地图实现基本地图和基本定位功能
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- Android Intent应用,打开网页,安装程序,打电话,打开地图等功能
- 调用百度地图Api实现的查看地图功能的小插件
- Android地图应用新视界--mapbox的常用功能封装工具类
- (转)测试u-box公司GPS专业测试软件u-center的地图功能
- Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
- 功能强大的fck编辑器(完整详解)
- 增强 scite 编辑器的代码提示功能
- Torque地图编辑器里利用fxShapeReplicator批量种树和植被(Use fxShapeReplicator speed your work)
- MVC3学习第十四章 佟掌柜第三弹——MVC3下利用陕北吴旗娃的验证码控件实现验证码功能以及在mvc3下使用编辑器
- 水经注地图发布服务中间件服务配置功能说明
- xheditor编辑器上传功能实现
- 地图、卫星视图功能介绍
- Android Intent应用,打开网页,安装程序,打电话,打开地图等功能
- 增强 scite 编辑器的代码提示功能
- 功能最强在的编辑器――vi
- 百度地图正式上线卫星地图功能