2011-09-03 8 views
5

wiem płótno HTML5 dość dobrze, znam podstawy i animacji za pomocą pętli itpJak narysować świat Box2D używając Canvas HTML5 zamiast Debug Draw?

Demo pracuję z: (kliknij, aby kształty) http://henry.brown.name/experiments/box2d/example-canvas.html

Co nie jestem bardzo obeznany ze jest Box2D. Używam portu Box2DWeb, słyszałem, że był nowszy niż Box2D-js, nie jestem pewien, który jest najlepszy.

Wiem, jak zainicjować "świat" i mogę umieszczać przedmioty na świecie. Następnie używam programu Step do animowania świata - jednak, aby wyświetlić go na ekranie do tej pory, udało mi się go uruchomić tylko przy pomocy debugowania, ponieważ w zasadzie robi on wszystko dla ciebie.

Zamiast korzystać z rysunków do debugowania, chciałbym użyć płótna do rysowania, na przykład samochodu zamiast tylko kwadratu. Jak dołączyć fizykę kwadratu do wizerunku samochodu? Po prostu nie mogę się skupić na integracji płótna z Box2D.

Wszelkie wskazówki będą bardzo cenne!

Dzięki

+0

Niesamowite link będziesz zainteresowany http://www.uselesspickles.com/jsballs/, to nic nie dostał się do zadajesz pytanie, ale jest to również niesamowita symulacja fizyki JavaScriptu –

+0

Hej. Zastanawiam się, czy problem został rozwiązany. Mam ten sam problem. Nie mam pojęcia, jak uzyskać dostęp do parametrów, takich jak pozycja, prędkość, kąt obiektu. Debuguj Rysuj, rysuje wszystko, używając wszystkich tych parametrów. Chciałem wiedzieć, jak możemy uzyskać do nich bezpośredni dostęp. – batman

+0

Bardzo późna odpowiedź, ale tak, problem został rozwiązany. Będę komentować w ramach innych odpowiedzi. – Henryz

Odpowiedz

2

Jeśli nie są zaznajomieni z Box2D powinieneś sprawdzić dokumentację w http://www.kyucon.com/doc/box2d/. To powinno ci powiedzieć wszystkie potrzebne właściwości. Według mojej wiedzy standardowym sposobem użycia Box2D jest dołączenie obrazu z userData. Zobacz ten przykładowy samouczek dotyczący użycia obrazu i płótna.

http://www.jeremyhubble.com/box2d.html

+0

http://www.kyucon.com/doc/box2d/ to świetny zasób! – Henryz

+0

http://www.jeremyhubble.com/box2d.html ostatecznie pomógł mi znaleźć rozwiązanie. Moje nowe eksperymenty z Box2D są na mojej stronie www.henry.brown.name – Henryz

+0

Dokumenty box2d są świetne, interfejs użytkownika może być jednak trudny w nawigacji. Po prostu ostrzegam, że dokumenty nie są jak jQuery. –

0

Miałem to samo pytanie. here jest dokumentacją tego. Można używać wywołań takich jak GetBodyList(), GetAngle() i takich, jak m_position, aby uzyskać wszystko, czego potrzeba do malowania przy użyciu biblioteki, której chcesz użyć na kanwie.

7

Ostatnie kilka dni spędziłem próbując tego samego. znalazłem Jonny Strömberg's tutorial, który nie jest super Drobiazgowy ale analizując kod znalazłem jak on pobiera pozycję ciała:

var b = world.GetBodyList() 

GetBodyList() wydaje się być iteracyjny Array, więc następnym ciało jest dostępne za pośrednictwem b. m_next.

Następnie można użyć

b.GetPosition().x 
b.GetPosition().y 
b.GetAngle() 

pobrać współrzędne organizmu.

EDIT: ten kod jest dla biblioteki Box2dweb, który znalazłem lepiej udokumentowane niż Box2djs

+0

Świetna odpowiedź, dziękuję za oświecenie mnie na GetBodyList. – Henryz