所以我一直致力于一些程序生成,我设法创建一个圆形单色渐变地图,用于生成其他地图。
def create_circular_gradient(self, world):
center_x, center_y = self.mapSize[1] // 2, self.mapSize[0] // 2
circle_grad = np.zeros_like(world)
for y in range(world.shape[0]):
for x in range(world.shape[1]):
distx = abs(x - center_x)
disty = abs(y - center_y)
dist = math.sqrt(distx * distx + disty * disty)
circle_grad[y][x] = dist
# get it between -1 and 1
max_grad = np.max(circle_grad)
circle_grad = circle_grad / max_grad
circle_grad -= 0.5
circle_grad *= 2.0
circle_grad = -circle_grad
# shrink gradient
for y in range(world.shape[0]):
for x in range(world.shape[1]):
if circle_grad[y][x] > 0:
circle_grad[y][x] *= 20
# get it between 0 and 1
max_grad = np.max(circle_grad)
circle_grad = circle_grad / max_grad
grad_world = self.apply_gradient_noise(world, circle_grad)
return grad_world
现在我的问题是,我究竟需要如何修改它以随机方式创建一个旋涡渐变?甚至可能是一个盒子或不同的线性渐变?
请注意,world
是一个随机生成的2d数组(可以是任何形状,如100x100甚至100x50但当然我使用它要大得多)和圆渐变,我添加了一个perlin噪音使这一代随机化。随机化它的代码适用于任何地图,但我不知道从哪里开始创建不同形状的渐变。
修改 忽略神奇的数字,这是我找到如何创建圆形单色渐变的唯一方法