city如何使用 mega unity_如何使用Unity创建随机关卡

本文介绍了如何在Unity中使用Drunkard Walk算法生成随机关卡,通过行走对象在网格上的随机移动来创建地板,再通过增加变化和生成墙壁来优化结果。项目提供了一个简单的实现,包括生成玩家和出口,以及扩展到包含敌人和道具的可能性。
摘要由CSDN通过智能技术生成

47bc3e591a16a45c84eae7106f596b30.png

本文转自Unity Connect

我们将介绍一种在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步,会得到以下结果。

5f27d1a234f54906dbb82191fc8adf69.png


我们可以通过加入一些变化来改进结果,我们从一个行走对象开始,然后在每一步加入概率来生成或销毁行走对象。
例如:在相同的30x30网格上,使用最多10个行走对象会得到以下结果。

d0bde4a0d11d24b0ea3b86a649c902df.png


这样看上去,似乎比之前的结果更为自然。
下一步,我们将生成墙壁。为此我们需要迭代网格上的每个瓦片,了解它是否是地板,然后把所有地板附近的空白瓦片替换为墙壁瓦片。

6064455bdc1af14c4d882daba0fb9fe7.png


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

8c924c92c499454c095b091e444e645d.png


现在我们可以添加玩家和出口到关卡,从而使玩家在关卡中移动。
通常我们可以添加玩家到第一个行走对象的初始位置,然后迭代所有地板瓦片,检查玩家和瓦片的距离,然后放置出口在最远的瓦片上。
现在,我们的地图生成器已经差不多完成了,我们可以开始添加玩家,敌人和道具等游戏内容。
我们也可以提供不同的概率给行走对象的生成,转向和销毁过程,然后基于这些变量加入道具和敌人的生成规则。
如果不喜欢墙体瓦片部分,我们也可以将它们的移除。
小结
这是一种在Unity中生成随机关卡的非常简单的方法,建议大家动手尝试文中提供的演示项目。

原文链接:

https://connect.unity.com/p/ru-he-shi-yong-unitychuang-jian-sui-ji-guan-qia?app=true​connect.unity.com

更多Unity教程,欢迎大家戳上方链接下载Unity官方app。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值