闪刀浪子的地图编辑器对应的地图解析类及教程.doc_第1页
闪刀浪子的地图编辑器对应的地图解析类及教程.doc_第2页
闪刀浪子的地图编辑器对应的地图解析类及教程.doc_第3页
闪刀浪子的地图编辑器对应的地图解析类及教程.doc_第4页
闪刀浪子的地图编辑器对应的地图解析类及教程.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

闪刀浪子的地图编辑器对应的地图解析类及教程首先多谢闪刀大大分享地图编辑器,对这个编辑器研究了一翻,的确很多地方做得很不错!在使用过程中,对地图的解析是个很麻烦的工作,在斜45度的地图中(貌似官方术语叫“斜轴视图”),在生成的ini(其实是xml文件)打开后有个叫floor的东西,其实是可行走范围,这个可行走范围是通过什么来设定的呢?之前闪刀大大给过一个公式,具体帖子看/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)等点,和得到的结果完全一样最后,俺不想误人子弟,一点非常非常重要的声明:重要:首先以上的公式只适用于Staggered斜45度角地图,而slide,和Diamond形地图,这个公式要稍加修改才能用。Staggered:Slide:Diamond:-疲劳的分割线(游戏开发真TM的累)-而得到的逻辑坐标就是把了斜45度得到的实际坐标么?当然不是仔细观察,如果我们想用一个直角的坐标来表示这个地图,那么大家可能开发起来也更加直观一些,看这个坐标表示出来的y轴都是扭曲的用起来实在不爽,那么我们来将它转换到直角坐标,那么再来加上寻路等算法都没有任何难度了,当然论坛里也有其它的教程如Diamond形状的,比较好的比如/thread-10747-1-1.html,但是,如果想配合Staggered斜45度角地图来使用的话貌似也不方便,那么我们来转换我们需要的坐标!首先我们将地图的高进行转换,这个转换主要是将菱形还原成正方形,例如菱形的高宽比是2:1,那么在地图上则需要将地图高度扩大一倍,然后旋转-45度,那么得到对应坐标如下我们更加仔细的对这个图的坐标进行标注:这样看这个地图是不是更加直观了?特别如果是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的版本,但是搜索下他的帖子,不少东西也已经让大家受益不少,非常感谢他!-号召的分割线(所有游戏开发者)-如果不涉及商业机密,希望大家都能把自己的教程或者作品源码分享出来,为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论