c# - (过山车/运输大亨)地形的生成

标签 c# algorithm terrain vertices

我目前正在尝试生成类似过山车大亨/运输大亨游戏中的地形类型。

这张图片显示了我想要实现的地形类型。 Screenshot of Transport Tycoon

据我所知,似乎有 13 种不同的图 block 形状。 1(平坦)+ 4(每个方向的坡度)+ 4(半平坦,半坡向上)+ 4(半平坦,半坡向下)= 13 个形状。

是否有任何公共(public)算法来生成这种地形,或者我只需要自己编写:)?

最佳答案

正方形的类型取决于网格每个顶点的高度,因此您需要的是一种生成每个顶点高度的算法。本例(运输大亨)的规则是,一 block 瓷砖的四个角最多有两步的高度差,而实际上两个顶点最多可以有两步的高度差。

生成地形的常见方法是通过模拟侵 eclipse ,也就是说,从随机地形开始,通过平滑和模拟河流等来侵 eclipse 它,直到得到你需要的东西。考虑到 TT 地形的限制,我怀疑它是如何制作的。除了坡度的限制外,游戏还要求地形相当平坦。 OpenTTD 的标准地形生成似乎是顶点的重复随机升高/降低。

您可以在 openttd.org 查看地形生成算法 http://svn.openttd.org/trunk/src/landscape.cpp
(搜索“GenerateLandscape”)。

这个开源版本支持多种生成方法,包括基于侵 eclipse (“Terragenesis”)和随机生成方法。

关于c# - (过山车/运输大亨)地形的生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260966/

相关文章:

c# - 如何使用正则表达式查找 RGB 中两个连续的重复字符?

查找序列中下一个数字的算法

c++ - 校验和计算——所有字节的补码和

algorithm - throttle 请求的速率限制算法

terrain - 地形的 Perlin 噪声生成

java - 地形平滑算法不起作用...它通过多次运行将值带向正无穷大和负无穷大

c# - 哪个函数用于使用 Unity 地形引擎绘制地形?

c# - 将这种字符串解析为 DateTime - "Friday 22nd March 2013"(C#)

c# - EF 中的 SaveChanges() 会导致插入未添加的对象吗?

c# - 如何告诉我的 Elastic Beanstalk 实例不要进入休眠状态?