python - 使用 Opennoise 在 Pymunk 中创建地形(形状)

标签 python pygame pymunk simplex-noise

我一直在尝试使用 Opennoise 在 pymunk 中创建一个具有 2D 地形的游戏。地形坐标为:

from opensimplex import OpenSimplex
noise = OpenSimplex()
inputs = np.zeros((100002,2))

for x in range(100000):
    inputs[x] = ([x, (noise.noise2d(0.004*x, 0) - 0.125)*100 + 700])
inputs[100000] = ([100000,900])
inputs[100001] = ([0,900])

y 坐标移动了 +700,因为我使用 pygame 显示所有内容,并且窗口顶部位于 y = 0,底部位于 y = 800。

然后,我创建一个具有多边形形状的 pymunk 静态主体,并创建一个 pygame 形状来显示地形,如下所示: (pm=pymunk)

 self.body = pm.Body(10,100,pm.Body.STATIC)
 self.shape = pm.Poly(self.body, inputs)
 space.add(self.body, self.shape)
 pygame.draw.polygon(surface, color, inputs)

pygame 创建的形状看起来正确,但与 pymunk 多边形的形状不匹配,这表明 pymunk 没有创建预期的形状。 那么我该如何创建预期的 pymunk 形状呢?

最佳答案

我认为问题可能是多边形不是封闭的且是凸的。通常,如果您想要长“波”/“线”,则使用线段形状而不是多边形更容易。 Pymunk 多边形始终是凸的。如果您传入的坐标尚未凸且封闭,则将创建并使用凸包。

如果这不是问题,我认为如果您将多边形的长度减少到 10 或 100,并截取一两张显示问题的屏幕截图并将其放在这里,将有助于理解问题。

关于python - 使用 Opennoise 在 Pymunk 中创建地形(形状),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694962/

相关文章:

python - 在 Windows 中安装 Yapsy for Python 脚本

python - 导入模块函数及其所需的依赖项

python - 当转换器包含嵌入式管道时如何从 ELI5 获取功能名称

python - 如何让屏幕忽略某些图像的背景颜色?

python - Julia 集分形

python - Pygame 不响应变量更新

python - 如何修复 Pymunk 中不平衡的下落运动学

pymunk - 如何在pymunk中获取圆坐标

python - 在 docopt 中实现 HTTPie

python - 如何用pymunk实现n体模拟?