地图编辑器功能

普通碰撞标记

如图所示,红色区域代表一个Tile,地图上每一个菱形空格代表一个区域(下文统一称为“地图片”),地图编辑器需要具备这样一种功能,就是标记哪些区域可以通过。

假设下图中蓝色外边框为屏幕边界,那么内部的菱形方片区域就可以看作是一个错开的二维数组(或者就是一个一维数组)。标记这些区域(地图片)也就很容易了,就像图中的蓝色标记连接成一条道路,到底是标记为0是道路,还是标记为1是道路其实并不重要,重要的是具有这样的功能。

标记好的地方需要做一个颜色标识,比如这个小菱形区域变成淡黄色半透明。再次点击这个地方,则取消标记。通常,会有一个提示光标跟随鼠标移动,在这个45度斜角地图中,提示光标显然也是菱形,这样更符合人们的习惯,值得注意的是,在这些菱形区域(地图片)中移动光标,需要一点技巧,因为我们希望光标自动对齐到每一个地图片,而不是跟随鼠标任意的移动,那么怎样判断鼠标当前是在哪一个地图片上呢?我用的方法很简单,就是使用三角函数计算出鼠标在当前位置的Tile上的区域(按对角线可以把一个Tile切分成上下左右四个三角形),进而推算出这个区域属于哪个地图片。这样就在不影响鼠标移动的情况下,自动让光标对齐到地图片了。

标记的信息将保存在地图文件的尾巴上。

 

 

地图模式选择

上图一个 45度斜角第三人称俯视 场景,这并非偶然,而是2.5D游戏的经典取景方式,显然,2.5D下的道路是斜方向排列的(但并非呈45度角),完全俯视的地图的道路则可能是横的或者是竖的,这是两种不同的地图排列,因此,编辑器中必须可以选择当前的地图模式(是否为45度斜角)。

 

节点和边

对于碰撞来说,你可以直接使用前面的标记来区分哪些区域不可行走,也可以使用节点和边的方式(没有节点存在的地方,显然就无法到达),这两个方式并不矛盾,也不多余,在通常情况下,仅仅使用标记判断是可以的,但对于需要有一定人工智能的情况就不够用了,你可能需要知道两个节点之间的移动代价,也可能希望根据需要来调整节点产生的密度(洪水填充法),因此两个功能并存是有必要的。

对于45度斜角地图,按照经典方式自动生成的节点和边看起来应该是这样:

 

对于纯的俯视地图则看起来和我们之前实现的一样,但需要注意的是,自动按经典方式生成节点的功能,应该自动按照每个地图片的坐标对齐到中间,而非经典方式产生的节点则需要按照设定的边长来产生节点,也就不用自动对齐了。

 

编辑器功能

编辑器一个常用的功能就是摆放固定的物体,通常的做法是贴一张图到地图上指定的位置就可以了,那么地图编辑器看起来可能如下:

 

Tile列表和物品列表都可以直接拖拉到地图中,Tile列表的内容从当前.map文件中自动分解而来,而物品列表则从当前应用程序目录的prop子目录中读取所有.png的图片得来(也就是说把每张图片作为一个物体)

地图的主要属性区,显示地图的尺寸,tile的数量等参数,可手动修改

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值