Как связать спрайт pyglet с телом pymunk, чтобы, если тело вращается, спрайт также вращался?
Как связать спрайт Pyglet с формой Pymunk, чтобы они вращались вместе?
Ответы (1)
Встроенной синхронизации нет, поэтому вам придется делать это самостоятельно для каждого кадра. Но не волнуйтесь, это очень легко.
Если ваше тело расположено посередине фигуры/фигур, а изображение такого же размера, вам нужны две вещи. Во-первых, установите якорь изображения на половину его размера. Затем в вашем методе обновления вы зацикливаете тела, которые хотите синхронизировать, и устанавливаете положение спрайта в положение тела, а вращение спрайта - в вращение тела, преобразованное в градусы. Вам также может понадобиться повернуть его на 180 градусов (если ваша модель перевернута) и/или инвертировать вращение.
В коде
img = pyglet.image.load('img.png')
img.anchor_x = img.width/2
img.anchor_y = img.height/2
sprite = pyglet.sprite.Sprite(img)
sprite.body = body
def update(dt):
sprite.rotation = math.degrees(-sprite.body.angle)
sprite.set_position(sprite.body.position.x, sprite.body.position.y)
Для полного примера взгляните на этот пример, который я создал: https://github.com/viblo/pymunk/blob/master/examples/using_sprites_pyglet.py
(Я автор pymunk)
+ 180
действительно быть там? Я получаю лучший результат без него.
- person Flimm; 29.01.2013