Jak powiązać sprite pyglet z ciałem "pymunk", tak, że jeśli ciało obraca się, to duszek również się obraca?Jak powiązać duszka Pyglet z kształtem Pymunk, aby obracały się razem?
7
A
Odpowiedz
4
Nie ma wbudowanej synchronizacji, więc musisz to zrobić na własnej ramie. Ale nie martw się, to bardzo łatwe.
Jeśli twoje ciało jest ustawione pośrodku kształtu/kształtu, a obraz jest tego samego rozmiaru, potrzebujesz dwóch rzeczy. Najpierw ustaw kotwicę obrazu na połowę rozmiaru. Następnie w swojej metodzie aktualizacji zapętlasz ciała, które chcesz zsynchronizować, i ustawiasz pozycję sprite na pozycję ciała, a sprite rotuje na obrót korpusu, przekształcając je w stopnie. Może być również konieczne obrócenie o 180 stopni (w przypadku odwrócenia modelu) i/lub odwrócenie obrotu.
W kodzie
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)
dla pełnego przykład spojrzeć na ten przykład ja Utworzono: https://github.com/viblo/pymunk/blob/master/examples/using_sprites_pyglet.py
(IM autora pymunk)
Jeżeli '+ 180' naprawdę istnieje ? Bez tego uzyskuję lepszy wynik. – Flimm
Tylko jeśli model jest odwrócony. W tym przykładzie duszek jest do góry nogami w stosunku do trójkąta, więc potrzebuje rotacji. Ale zwykle go nie potrzebujesz. Teraz zdaję sobie sprawę, że bez niego byłoby czystsze. – viblo