7
pygletスプライトをpymunkボディにバインドするにはどうすればいいですか?ボディが回転しているときにスプライトも回転するようにしますか?PygletスプライトとPymunkシェイプを一緒に回転させるにはどうすればよいですか?
pygletスプライトをpymunkボディにバインドするにはどうすればいいですか?ボディが回転しているときにスプライトも回転するようにしますか?PygletスプライトとPymunkシェイプを一緒に回転させるにはどうすればよいですか?
同期が組み込まれていないため、各フレームで自分で行う必要があります。しかし、心配しないでください、非常に簡単です。
あなたの体が図形/図形の中央に配置されていて、画像のサイズが同じ場合は、必要なものが2つあります。まず、画像アンカーを半分の大きさに設定します。次に、更新メソッドで、同期させるボディをループし、スプライトの位置をボディの位置に設定し、スプライトの回転をボディの回転に合わせて度に変換します。また、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'は本当にあるはずです?私はそれなしでより良い結果を得る。 – Flimm
モデルが上下が逆の場合のみ。この例では、スプライトは三角形に対して上下が逆になっているため、回転する必要があります。しかし、通常、あなたはそれを必要としません。それがなければもっと明確になっていたはずです。 – viblo