2011-09-25 10 views
11

Używam box2d na iphone, aby utworzyć grę. Mam ciało, które odbywa się pod wpływem grawitacji, aby zejść w dół, a nie w prawo lub w lewo. Zostanie uderzony przez inne ciało, a następnie będzie poruszał się w prawo lub w lewo. Następnie mam przycisk resetujący, który przenosi ciało z powrotem do punktu początkowego. Jedynym problemem jest to, że nadal porusza się w prawo lub w lewo. Jak mogę przeciwdziałać siłom, które piłka już podróżuje? Jak mogę pozbyć się tego prawego i lewego ruchu po zresetowaniu mojej gry?Jak zatrzymać siły działające na ciało w box2d

Odpowiedz

25

box2d automatycznie czyści siły w każdym kroku symulacji. Myślę, że zmieniasz pozycję ciała podczas resetu, ale nie jest to prędkość. Dodaj ten kod do swojej metody Reset:

body->SetLinearVelocity(b2Vec2(0,0)); 
body->SetAngularVelocity(0); 
+0

próbowałem ten sposób, ale nie działa, gdy dwa obiekt blisko siebie http://stackoverflow.com/questions/39716111/cocos2dx-unable-to- set-velocity-0-0 – TomSawyer

+0

@TomSawyer: prawdopodobnie zderzają się po zresetowaniu prędkości i to powoduje zmianę ich prędkości. – Andrew

+0

Myślę, że zresetowanie prędkości powoduje, że jeden obiekt stoi nieruchomo. niemożliwe jest zderzenie się z drugim. W każdym razie, aby upewnić się, że jeden obiekt został zatrzymany? – TomSawyer