迷宫怎么做

 我来答
留溶溶A6
2022-11-27 · TA获得超过745个赞
知道大有可为答主
回答量:5671
采纳率:99%
帮助的人:131万
展开全部

文章基于一种基础的地图,来讨论二套不同的地图生成方案。

文章不会出现跟代码相关的内容,会以较为通俗的语句和不少简单的示意图来表示迷宫的生成方案。其中不少方法来自于游戏界前辈。

我根据自己的基础地图做了不少修正(毕竟迷宫和地图的形式多种多样,适合自己游戏的才是最好的)。

根据方案生成地图之后,还可以加上一些静态分布来丰富地图表现,大家就自行发挥啦!

地图基础

地图的形式很多,这里我使用的地图是以tile块为单位分割的地图,地图上的tile块形式很多,但主要分成三种:

A:陆地,可以在上面分布一些角色啦物件啦

B:过渡,根据物理框可以在上面移动,不过一般不会分布物件

C:水域,不可移动的区域,可以理解成为迷宫的“墙”

在后文的迷宫生成方案里,会以水域作为分割,主要围绕陆地的分布来设计迷宫,过渡的地块根据游戏实际需要再去生成。如果你不希望地图用水域来分割,那只需要把水域改成传统的墙壁即可。

本文用来展示的地图,面积都比较小,方便表达迷宫的生成规则。在实际游戏制作时,按需求去铺量就行。

方案一:主路扭曲型

1、首先,按照下图的间隔规则来生成基础的大地图,1为陆地,0为水域。

2、然后,选择一个靠近边缘的1作为起点,在它的周围随机找另一个黄色的1(这里的“周围”指的是上下左右4个方向,斜边不算)。找到就把他们联通,即把两个1之间的0变成陆地,这里用红色来表示。

3、把上一步“终”的格子作为新的一个“起”格子,不停循环第二步的过程,直到找不到周围有黄色的1。

4、这时候,原路往回走(即不停去找前一个格子),直到找到一个格子,这个格子周围有黄色的1,那么从这个格子开始重复前两个步骤。

5、接下来就是不停重复上面的步骤,找到就联通,找不到就往回走~

6、填充完整个地图之后,迷宫就算是制作完成了,根据需求加上终点即可。

总结一下,这种方案生成的迷宫会有一条明显的主路,即一条特别长、贯穿大部分区域的路线,同时,迷宫的路线一般比较扭曲。

方案二:自然分岔型

这个方案的雏形来自于随机prim算法,具体步骤如下:

1、跟方案一一样,生成一个基础地图。格子先用黄色1和灰色0来表示,暂时不区分水陆。

2、随机取一个地图边缘的黄色1,把它标记为红色1,即变成陆地。然后把它旁边的灰色0标记成蓝色0,表示“待定”。(注意的是,大地图四周的灰色0固定不变,作为地图边缘而存在)

3、敲黑板了!!这里是重点!!!

随机选一个蓝色的0(这一步很重要,会使这个方案明显区别于上一个方案),然后看红色1隔着这个蓝色0对面的格子,是否是黄色的1:

如果是,则把对面的黄色1标记成红色1,即变成陆地,然后把蓝色0变成红色的0,即也变成陆地;

如果不是,就把这个蓝色的0变成灰色的0。

最后,把新创建的红色1周围的灰色0,标记成蓝色0。

4、继续重复上面的步骤

5、对比上图和下图,这里取一个蓝色0生成一个红色1之后,新生成的红色1旁边,有两个蓝色0的两边都是红色1了,那么就根据第三步的规则,在稍后取到这些蓝色0时,就会把他们变成灰色0

6、继续重复上述步骤,直到整个地图没有蓝色0了,地图就生成完毕

总结一下,对比方案一,这套方案不会出现明显的主路,迷宫相对比较自然,但迷宫的分岔路会比较多,所以迷宫可能会更复杂,即玩家需要做选择的次数可能比较多。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式