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
11
A
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);
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
@TomSawyer: prawdopodobnie zderzają się po zresetowaniu prędkości i to powoduje zmianę ich prędkości. – Andrew
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