2012-10-24 5 views

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)

+0

Jeżeli '+ 180' naprawdę istnieje ? Bez tego uzyskuję lepszy wynik. – Flimm

+0

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

Powiązane problemy