【问题标题】:Procedural Road Generation, Unity程序道路生成,统一
【发布时间】:2016-08-08 06:14:40
【问题描述】:

我正在开发 2d 等距游戏。你在城市里开车,仅此而已。 问题是生成具有连接道路的随机地图。 我想写脚本——我想我能——但我找不到算法本身的想法。 假设我有 100x100 的地图,我想构建布尔表 1 是道路 0 不是道路。

到目前为止,我的解决方案是在水平和相同垂直方向上绘制随机数行(例如 4-8 行)。但是这个路线图是直的。

你能分享一些想法吗?任何人都会有所帮助

【问题讨论】:

    标签: dictionary random generator unity5 procedural


    【解决方案1】:

    这个问题过于宽泛,无法简单回答。有很多不同复杂程度的方法。

    但作为提示,请从不同的角度考虑问题。肯定最终你想要道路,但为什么首先要有道路呢? 在你的情况下,它是一个城市。一个城市由通常是矩形的城市街区组成。所以一种方法是找到一种方法用矩形填充地图并考虑边缘道路(或仅考虑一些)。

    或者您可以研究三角测量算法并使用一堆随机点对您的地图进行三角测量。然后组合一些三角形并将这些边用作道路。

    甚至只使用随机游走设置,因此它不会完全转身。

    或者...

    ...不过说真的,选项和可能的解决方案是多种多样的,并且取决于您的技能水平(以及您最终希望如何看待您的城市)。 不要搜索您的具体问题,尝试根据您的需要调整一些其他算法。有大量关于 roguelike 游戏随机地牢生成的教程。 最后也可能不会有一个单一的生成算法给你最好的结果,而是许多的组合。

    【讨论】:

    • 您好@yes,感谢您的提示,我找到了一些有用的信息。我想出了一些随机大小的线性网格地图和随机地图对象,效果如下:) link 再次感谢,祝你有美好的一天!
    • @budda1989 到目前为止看起来不错,现在继续构建它。你有那些路,你知道他们在哪里交叉。现在再次移除两个交叉路口之间的一些道路,这已经有点破坏了网格性质。然后你可以再通过检查长路,例如添加一条 U 形曲线,或者开辟一条分割街区的道路,或者走一个十字路口,把它变成一个环形交叉路口。这只是我立即想到的一些想法。
    • 或者您也可以将地图分成 2 份(或 3 份),一条从北到南的道路。然后用一条路(或两条或三条)从东到西分开两边,但每条路的高度不同。然后你再次垂直分割,然后水平分割。这样做几次。然后删除一些道路,创建一些环形交叉路口,也许在一些很长的直路段上开辟一条道路等等。还有一些不相关的东西,将箭头转动 45°,atm 只能猜测它们的意思;)
    • 哇,这么多 cmets,我的意思是,您不必在单个循环中生成地图。如果你重复2-3次,你可能会得到更好的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多