我正在使用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)
然后将瓷砖添加到精灵组中,并在屏幕上绘制。我敢肯定,有更好的方法可以做到这一点,但似乎应该起作用。阀绘制时用来使瓷砖着色,将其映射在0和1之间,并乘以255。
。这是我一直从中获得的图像(尝试不同的种子时我会得到类似的图像):打开单纯噪声gen
这是该图像归一化的,以便所有值> 0.5转到1,所有值小于0.4 to 0 to 0,所有值之间的一切设置为0.5。这样做是为了提取我看不到的任何隐藏梯度,但它所做的就是这样做:在此处输入图像描述
如您所见,它看起来完全随机。我究竟做错了什么??谢谢
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)