7 votes

Comment lier un sprite Pyglet à une forme Pymunk pour qu'ils tournent ensemble ?

Comment lier un sprite pyglet à un corps pymunk de sorte que si le corps tourne, le sprite tourne également ?

4voto

viblo Points 1577

Il n'y a pas de synchronisation intégrée, vous devez donc le faire vous-même à chaque image. Mais ne vous inquiétez pas, c'est très facile.

Si votre corps est positionné au milieu de la/des forme(s) et que l'image a la même taille, vous avez besoin de deux choses. Tout d'abord, réglez l'ancre de l'image à la moitié de sa taille. Ensuite, dans votre méthode de mise à jour, bouclez les corps que vous souhaitez synchroniser et définissez la position du sprite sur la position du corps et la rotation du sprite sur la rotation du corps convertie en degrés. Vous devrez peut-être aussi effectuer une rotation de 180 degrés (au cas où votre modèle serait retourné) et/ou inverser la rotation.

En code

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)

Pour un exemple complet, jetez un coup d'œil à cet exemple que j'ai créé : https://github.com/viblo/pymunk/blob/master/examples/using_sprites_pyglet.py

(Je suis l'auteur de pymunk)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X