1

我一直在尝试使用 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 形状?

4

1 回答 1

0

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

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

于 2020-01-12T18:41:56.187 回答