Создание ландшафта (формы) в Pymunk с помощью Opennoise

Я пытался создать игру на пимуне с 2D ландшафтом, используя Opennoise. Координаты местности:

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.

Затем я создаю статическое тело пимунка в форме многоугольника и создаю фигуру пигейма для отображения ландшафта следующим образом: (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)

Форма, созданная pymunk, которая выглядит правильно, не совпадает с формой многоугольника пимунка, что указывает на то, что пимунк не создает заданную форму. Итак, как мне создать фигуру пимунка, как задумано?


person lars.stifi    schedule 11.01.2020    source источник


Ответы (1)


Думаю, проблема может быть в том, что многоугольник не замкнутый, а выпуклый. Обычно, если вам нужна длинная «волна» / «линия», проще использовать формы сегментов вместо многоугольников. Многоугольники Pymunk всегда будут выпуклыми. Если то, что вы передаете в качестве координат, еще не является выпуклым и закрытым, будет создана и использована выпуклая оболочка.

ЕСЛИ проблема не в этом, я думаю, что было бы легче понять проблему, если бы вы уменьшили длину многоугольника до 10 или 100, сделаете снимок экрана или два, которые показывают проблему, и поместите их здесь.

person viblo    schedule 12.01.2020