查看原文
其他

如何使用Unity创建随机关卡

Unity Unity官方平台 2022-05-07

本文,我们将介绍一种在Unity中生成随机关卡的简单的方法。


项目下载

本文中的项目使用了Unity 2019.1.0f2,Cinemachine 2.3.4和TextMeshPro 2.0.1进行制作。


下载项目

本文将讲解项目所使用方法的逻辑,你可以查看相应代码进行理解。


项目下载:

https://github.com/mihailt/LevelGeneration

 

试玩体验

你可以访问下面的链接,体验运行结果。

https://mihailt.itch.io/random-levels-with-unity-3d


开发过程

为了生成地牢关卡,在项目中,我们将使用Random Walk随机游走算法的变体,即Drunkard Walk算法。

 

Drunkard Walk算法中,行走对象放置在网格中,然后以随机方式朝预定方向移动。我们记录行走对象到达的所有位置,在这些位置上渲染地板瓦片。

 

首先,我们要定义一个网格,标记所有瓦片为空白状态,然后添加行走对象并查看发生的事情。

 

这样会提供有趣的结果,例如:如果设为在30x30的网格上行走100步,会得到以下结果。



我们可以通过加入一些变化来改进结果,我们从一个行走对象开始,然后在每一步加入概率来生成或销毁行走对象。

 

例如:在相同的30x30网格上,使用最多10个行走对象会得到以下结果。



这样看上去,似乎比之前的结果更为自然。

 

下一步,我们将生成墙壁。为此我们需要迭代网格上的每个瓦片,了解它是否是地板,然后把所有地板附近的空白瓦片替换为墙壁瓦片。



我们也可以把地面瓦片和空白瓦片之上,每个墙体瓦片替换为有装饰性的墙体瓦片,从而实现更好的外观。


 

现在我们可以添加玩家和出口到关卡,从而使玩家在关卡中移动。

 

通常我们可以添加玩家到第一个行走对象的初始位置,然后迭代所有地板瓦片,检查玩家和瓦片的距离,然后放置出口在最远的瓦片上。

 

下面视频展示了最终效果。



现在,我们的地图生成器已经差不多完成了,我们可以开始添加玩家,敌人和道具等游戏内容。


我们也可以提供不同的概率给行走对象的生成,转向和销毁过程,然后基于这些变量加入道具和敌人的生成规则。


如果不喜欢墙体瓦片部分,我们也可以将它们的移除。


小结

这是一种在Unity中生成随机关卡的非常简单的方法,建议大家动手尝试文中提供的演示项目。更多Unity教程,尽在Unity Connect平台(Connect.unity.com)。

 

下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方


推荐阅读

在Unity中程序化生成地牢环境

使用Unity程序化方法制作游戏动画

Unity中的程序化随机纹理制作功能

创建程序化的游戏世界(1)

创建程序化的游戏世界(2)

在Unity中使用WFC算法无限生成城市

Project Tiny C# 预览版现已推出

在Unity中实现准确的帧率


直播课程

6月12日晚8点,Unity技术经理成亮将为你解析轻量级渲染管线LWRP最新功能及案例。[了解详情...


直播课程:轻量级渲染管线LWRP最新功能及案例解析

直播地址

https://connect.unity.com/events/2019_lwrp_new_features



喜欢本文,请点击“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存