0

我正在 pygame 中开发一个基于 2d 瓷砖的游戏,我正在尝试使用噪声图来生成我的地图。

我已经安装了 OpenSimplex 库,那里一切正常。问题是我似乎没有得到平滑的随机梯度,它看起来更像是随机噪声。

这是我用来生成图像的函数:

def generate_noise(seed,game):
size = int(WIDTH/TILESIZE)
tmp = OpenSimplex(seed)
for x in range(size):
    for y in range(size):
        val = (tmp.noise2d(x,y)+1)/2
        Tile(game,x,y,val)

Tile 然后被添加到 sprite 组并在屏幕上绘制。我确信有更好的方法可以做到这一点,但它似乎应该工作。val 用于在绘制瓷砖时对其进行着色,将其映射在 0 和 1 之间并乘以 255。

这是我得到的图像(当我尝试不同的种子时,我得到了相似的图像): open simplex noise gen

这是标准化的图像,因此所有大于 0.5 的值都变为 1,所有小于 0.4 的值都变为 0,介于两者之间的所有值都设置为 0.5。这样做是为了尝试绘制任何我可能看不到的隐藏渐变,但它所做的只是: 在此处输入图像描述

如您所见,它看起来完全随机。我究竟做错了什么??谢谢

4

1 回答 1

0

OpenSimplex 与浮动非整数一起使用。你看到的是一种缩小版的噪音。您应该确定一个比例变量以轻松解决此问题。大约 100 的比例非常适合您的示例。随意改变它。

def generate_noise(seed,game):
    scale = 100
    size = int(WIDTH/TILESIZE)
    tmp = OpenSimplex(seed)
    for x in range(size):
        for y in range(size):
        val = (tmp.noise2d(x/scale, y/scale)+1)/2
        Tile(game,x,y,val)
于 2020-06-22T04:12:17.610 回答