7

How do I bind a pyglet sprite to a pymunk body so that if the body is rotating the sprite also rotates?

4

1 回答 1

4

没有内置同步功能,因此您必须在每一帧中自己进行同步。但别担心,这很容易。

如果您的身体位于形状/形状的中间,并且图像大小相同,则需要两件事。首先,将图像锚设置为其大小的一半。然后在您的更新方法中,您循环要同步的主体并将精灵位置设置为身体位置,并将精灵旋转设置为转换为度数的身体旋转。您可能还需要将其旋转 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的作者)

于 2012-10-27T23:52:28.330 回答