- 浏览: 43256 次
- 性别:
- 来自: 广州
最新评论
首先多谢闪刀大大分享地图编辑器,对这个编辑器研究了一翻,的确很多地方做得很不错!
在使用过程中,对地图的解析是个很麻烦的工作,在斜45度的地图中(貌似官方术语叫“斜轴视图”),在生成的ini(其实是xml文件)打开后有个叫floor的东西,其实是可行走范围,这个可行走范围是通过什么来设定的呢?之前闪刀大大给过一个公式,具体帖子看
http://bbs.actionscript3.cn/viewthread.php?tid=10227
闪刀给的“官方”解释是:
floor中存的直接就是每一块格子的状态,表示能走或者不能走。这些0或者1与每一块网格有对应关系。
位置的确定用公式计算,数组中的位置X * 格子宽度 数组中的位置Y * 格子高度/2
那如何解析这些关系到一个逻辑坐标去呢?
我尝试进行修改了其中的01,发现在连续的解析后得到的图像是先排直的,再拍横的,得到的图应该是这样的:
那么这个公式是怎么样的呢?
这个地图有5行,看着这个地图你会想,怎么拼图才能将地图拼出来。再画张图来演示:
从这张图可以看出,拼图时从左到右,从上到下,跟正规的矩形拼图一样,唯一同的是,地图元素与元素之间有重叠,看看第一行和第二行之间,第二行的地图元素会压在第一行的元素上,而第三行的的地图元素则压在第二行的元素上。所以,只要找到正确的公式,你就能正确地设计程序,再来一张图:
图上绿点(是高亮度绿色,不是暗绿色)是每块地图元素的起点,第一行的座标是0,第二行的座标是1,第三行的座标是2,......由这些行位座标决定你的地图元素的起点,从这个规律中看出行位座标0,和行位座标2的横向座标X的起点是一样的是0,行位座标1的起点是向右移半块地图元素。
再从纵向座标找规律,看行位座标0和行位座标2,两块地图元素之间的距离刚好是一块地图元素的高。再看看行位座标0和行位座标1,两块地图元素之间的距离刚好是半块地图元素的高。所以,计算每块地图元素的位置,你的转换显示坐标和逻辑公式刚好是:
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
其中TileHeigth和TileWidth是菱形的高和宽,这样你可以再尝试着定义(0,1),(0,2),(0,3)等点,和得到的结果完全一样···
最后,俺不想误人子弟,一点非常非常重要的声明:
[1b]重要:[/1b]
首先以上的公式只适用于Staggered斜45度角地图,而slide,和Diamond形地图,这个公式要稍加修改才能用。
Staggered:
Slide:
Diamond:
-----------------------------------------------------------疲劳的分割线(游戏开发真TM的累)--------------------------------------------------------------------------
而得到的逻辑坐标就是把了斜45度得到的实际坐标么?当然不是···
仔细观察,如果我们想用一个直角的坐标来表示这个地图,那么大家可能开发起来也更加直观一些,看这个坐标表示出来的y轴都是扭曲的用起来实在不爽,那么我们来将它转换到直角坐标,那么再来加上寻路等算法都没有任何难度了,当然论坛里也有其它的教程如Diamond形状的,比较好的比如
http://bbs.actionscript3.cn/thread-10747-1-1.html
,但是,如果想配合Staggered斜45度角地图来使用的话貌似也不方便,那么我们来转换我们需要的坐标!
首先我们将地图的高进行转换,这个转换主要是将菱形还原成正方形,例如菱形的高宽比是2:1,那么在地图上则需要将地图高度扩大一倍,然后旋转-45度,那么得到对应坐标如下
[1b]下载[/1b] (48.32 KB)
2008-12-5 06:32
我们更加仔细的对这个图的坐标进行标注:
[1b]下载[/1b] (240.73 KB)
2008-12-5 06:32
这样看这个地图是不是更加直观了?特别如果是online游戏的话,服务器端的操作也更加方便了,毕竟这个是我们所熟悉的二维直角坐标系,计算等等也最简单了,从刚才上面得到的那个逻辑坐标转换成直坐标应该怎么进行?来看下面的公式:
Direct_X = ( logic.x - logic.y / 2 ) + ( logic.y & 1 ) + Direct_Length;
Direct_Y = ( logic.y / 2 ) + logic.x + ( logic.y & 1 );
想问那个Direct_Length是个什么参数?
仔细观察下,这个Direct_Length应该是上图左上角的黑色区域的等腰三角形的腰宽,如何计算这个值?用以下公式:
Direct_Length = ( row - 1 ) / 2;
row为每行逻辑坐标中每列中含有的元素个数,而这个参数在闪刀浪子地图编辑器中生成的文件中在floor中有注明,大家自己查看;
结合上面的公式我们来总结得出屏幕图像的坐标和直角坐标的直接转换关系(如果你现在的游戏还是2D游戏并并且你希望能转2.5D的话,那么在不改变大部分逻辑的情况下,只改变可视内容就能完成,以下公式可能非常有用:
-----------------------------------------------------------希望的分割线(写给闪刀浪子)----------------------------------------------------------------------------------
给闪刀浪子:
1.这个地图编辑器还有不少问题,比如排布的时候可行走范围在网格层上的编辑鼠标很多时候选中不能···很痛苦
2.导入图元可行走范围的划定非常不人性化,是我方法不对?
3.资源管理和地图管理中拖动编辑能实现么?还有就是缩放问题如果也能解决就完美了!
当然这些都只是希望,我们都知道那个地图编辑器是个demo的版本,如果有正式版本是否可以分享,或者需要付费的怎么收费?很期待呢~
闪刀虽然目前只放出一个demo的版本,但是搜索下他的帖子,不少东西也已经让大家受益不少,非常感谢他!
-----------------------------------------------------------号召的分割线(所有游戏开发者)-------------------------------------------------------------------------------
如果不涉及商业机密,希望大家都能把自己的教程或者作品源码分享出来,为我们共同的游戏事业锦上添花!!
最后送上本例源代码,配套的寻路,深度排序我正在写,等有了结果我会分享的!
祝大家开发顺利,心想事成!
[1b]
点这里下载
[/1b]
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/4987.html
发表评论
-
flv制作工具大全
2010-04-10 09:50 658Collected links to Flash Vid ... -
FLV播放器汇总
2010-04-10 09:50 545http://www.dengjie.com/weblog/c ... -
FCS阅读笔记29 服务器日志
2010-04-10 09:49 547在管理FlashCom MX Server的时候,一件非常重要 ... -
FCS阅读笔记29 服务器日志
2010-04-10 09:49 700在管理FlashCom MX Server的时候,一件非常重要 ... -
Flash Media Server 起步(13)再说说SO....onSync(list)
2010-04-10 09:49 494很早以前写过so,当时 ... -
flash AS3爱好者不可缺少的Class Diagram( 类图表 )下载
2010-04-09 12:46 958很早前就在 RIS 上发现了一张 101.588cm x 71 ... -
flash AS3爱好者不可缺少的Class Diagram( 类图表 )下载
2010-04-09 12:45 894很早前就在 RIS 上发现了一张 101.588cm x 71 ... -
flash AS3.0 的第一步: Hello World
2010-04-09 12:45 1029应网友(他原是美工的)的要求,写一篇Flash CS3 的基 ... -
flash AS3.0 的第一步: Hello World
2010-04-09 12:45 965应网友(他原是美工的)的要求,写一篇Flash CS3 的基 ... -
as3游戏开发之打气球系列(二)
2010-04-09 12:45 537HI,经过了昨天疯狂的理 ... -
as3.0游戏开发之打气球系列(一)
2010-04-09 08:25 553好久没有写正经的文章 ... -
as3按钮事件
2010-04-09 08:24 532在刚开始学As3时,如果不知道按钮的事件如onPress的话 ... -
【as3】ActionScript 3.0体验试教学视频教程
2010-04-09 08:24 359很不错的视频教程 原文地址: http://blog.sina ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 08:24 556[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
ActionScript 3.0(as3)实现的A*寻路算法源代码下载
2010-04-09 08:24 1080曾经写过A*寻路算法的教程,但没有贴出任何代码,这次代码全都贴 ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 07:49 504。先看下时钟效果: var fnum:Number = ... -
动画人物运动规律与节奏
2010-04-08 07:49 543本文转自:h ... -
Flash绘制美丽风景画之海滩
2010-04-08 07:49 441过前段时间学习,我们掌握了鼠绘的一些初步知识,今天我们来综合一 ... -
Flash制作卷轴水墨画展开动画效果
2010-04-08 07:48 633北京奥运会开幕式上那充满诗意的卷轴,以及它所呈现给我们的一幅幅 ... -
Flash鼠绘入门第十三课:绘制美丽春日飞燕
2010-04-08 07:48 489相传燕子于春天社日北 ...
相关推荐
NULL 博文链接:https://as3.iteye.com/blog/996540
Free JavaScript Editor编辑器是一个先进的Java脚本编辑器,验证器和调试器对于初学者和专家。 免费的JavaScript编辑器是用于专业编辑JavaScript代码和创建动画和其他特殊效果网页使用DOM中,使用DOM, DHTML, CSS, ...
精品完整版可编辑PDF教程-谭浩强C程序设计-孤灯浪子整理版
实现寻路 人物走动 场景切换 闪刀浪子demo
冰狐浪子网页加密器,杀软若是报毒,请自行判断
html5 canvas 教程 pdf中文版 天涯浪子
本书重点介绍Ajax及相关的工具和技术,主要内容包括XMLHttpRequest对象及其属性和方法、发送请求和处理响应、构建完备的Ajax开发工具、使用JsUnit测试JavaScript、分析JavaScript调试工具和技术,以及Ajax开发模式和...
精品完整教程-单片机C语言入门-孤灯浪子整理版
编辑浪子版表单验证类
C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过大量的实例介绍了C语言...
汉化狂人 3.6 by 汉化浪子 apk汉化必备
完整pdf教程-SEO入门到提供全攻略-孤灯浪子整理版
Office Tab 是一款应用于 Microsoft Office 的插件,其内含 ExcelTab、WordTab 和 PowerPointTab三个组件,分别对应使Excel、Word 和 PowerPoint 支持文档级别标签功能。Office Tab Enterprise 包含有 Word Tab, ...
复数类 java 来源于浪子阿正
js将多个经纬度标注在百度地图上的demo
十一、改进了作者在发表文章时会自动退出的BUG和代码了一些代码介界之类的东西! 其它、自已体会.... 超级用户名 ddown 密码 ddown 使用数据库:54lz.mdb 要改请改以下三个文件:...
【 地图系列 】 各县的 JSON 地图文件 在【中国各省市级 JSON 文件】中,由上官真心网友提供了各省的文件,各省里包含有各市的数据。但是省里并没有包含县的数据,常有朋友寻找。 最近,网友寻梦向本站提供了...
精品完整版pdf教程-谭浩强C++程序设计(带所有源码)-孤灯浪子整理版
英文大家都不陌生吧 不过不要担心 本软件经过西门浪子哥精心汉化过了 不信有图哦 还有西门浪子哥的小KEY密匙一枚哦
vbsedit 英文绿色破解版 (vbs 脚本编辑工具) 天涯浪子