所以我尝试使用 OpenSimplex 噪声来生成 2D 地形,但似乎我错过了一些东西,因为地形看起来大多是随机的。我究竟做错了什么?这是代码:import pygamefrom opensimplex import OpenSimplextmp = OpenSimplex()pygame.init()display_width = 800display_height = 600black = (40,40,40)gameDisplay = pygame.display.set_mode((display_width,display_height))gameDisplay.fill(black)gameDisplay.convert()clock = pygame.time.Clock()dimensions = [100,100]size = 40def mapping(x): y = (x + 1) * 10 + 40 return yclass GroundCell: def __init__(self,x,y,dim): self.x = x self.y = y self.dim = dimtempcells = []allCells = []for a in range(0,dimensions[0]): tempcells = [] for b in range(0,dimensions[1]): tempcells.append(GroundCell(a*size,b*size,mapping(tmp.noise2d(a,b)))) allCells.append(tempcells)while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() quit() for a in allCells: for b in a: pygame.draw.rect(gameDisplay,(b.dim,b.dim,b.dim),(b.x,b.y,size,size)) pygame.display.update() clock.tick(120) gameDisplay.fill(black)这是产生噪声的图像
1 回答

德玛西亚99
TA贡献1770条经验 获得超3个赞
你必须得到整数之间的值,这会“平滑”结果,否则你会得到普通的噪音。所以你必须改变这一行:
tempcells.append(GroundCell(a*size,b*size,mapping(tmp.noise2d(a,b))))
像这样:
tempcells.append(GroundCell(a*size,b*size,mapping(tmp.noise2d(a*0.1,b*0.1))))
添加回答
举报
0/150
提交
取消