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