Box2D dziwne kolizje na rogu obiektu

0

Witam!
Ostatnio pisząc sobie prostą gierkę, by doedukować się nieco w Box2D, napotkałem pewien problem, który spędził mi sen z powiek. Otóż kiedy przesiadłem się z prostego prostokąta jako podłoże na losowo generowany chainShape, moja postać ma bardzo dziwne kolizje. Wróciłem do prostokąta, ale dalej to samo, problem polega na tym, że kiedy przekręcę postać na róg, to unosi się ona nieznacznie w powietrze, choć wcześniej wszystko działało pięknie:
[IMG]http://i63.tinypic.com/33m3ozk.jpg[/IMG]
Tak to wygląda teraz

[IMG]http://i66.tinypic.com/29nul8y.jpg[/IMG]
Tak to wygląda teraz gdy postać leży na boku

[IMG]http://i65.tinypic.com/n1tp9z.jpg[/IMG]
Tak to wyglądało wcześniej (i tak powinno wyglądać teraz)

Problem jest taki, że nie pamiętam, czy implementując tego chainShape'a dotykałem inny kod, spędziłem blisko 9h na debugowaniu, zmienianiu i ogólnie zabawie by ten problem wyeliminować... Bardzo proszę o pomoc, kod jest tu http://www.mediafire.com/file/c7yaacleqy344cg/test.zip
(przepraszam za bałagan w kodzie, nie mam czasu ani potrzeby robić w nim porządku, myślę, że da się w nim rozczytać).
Dzięki wielkie!

0

spróbuj z parametrami ciała jak linear damping czy innymi (tak zgaduję, miałem kiedyś podobne problemy w silnikach fizycznych, które uaktywniały się przy źle dobranych parametrach, ew. wynikały z ograniczeń danego silnika jako takiego), może kwestia jeszcze grawitacji, albo źle ustawionego środka ciężkości, albo źle dobranego kształtu(shape) dla danego ciała? Albo czegoś innego. To niekoniecznie musi być w body (z tego co patrzę w dokumentacji w Box2D jest jeszcze coś takiego jak fixtury - tam też są jakieś parametry)

Creates a fixture from a shape and attach it to this body. This is a convenience function. Use b2FixtureDef if you need to set parameters like friction, restitution, user data, or filtering. If the density is non-zero, this function automatically updates the mass of the body.
popróbowałbym z restitution czy friction.

W każdym razie - zgadując na podstawie swoich własnych problemów kiedyś przypuszczam, że któryś parametr jest źle ustawiony. Chociaż nie wiem czy mam rację czy nie.

Aha, przeszukaj też Google bo być może problem leży w jakimś ograniczeniu albo bugu Box2D, zobacz te opisy problemów i zastanów się czy nie może to cię to dotyczyć:
https://www.google.pl/search?q=chainShape%2C+weird+collisions&oq=chainShape%2C+weird+collisions

aha, i czy na pewno to co na ekranie jest tym, to w silniku? Mnie się zdarzało tak, że pewne rzekome problemy wynikały ze złego mojego renderingu (złych przeliczeń wartości z silnika na ekran), a nie z tego co jest w silniku.

0

Spróbowałem bawić sie parametrami, problem pozostaje, choć mają one efekty (np.odbijanie się ciała). Google przeszukałem już wcześniej wzdłuż i wszerz, zero niczego, a odnośnie renderowania to sprawdzałem wszystko jakieś 10 razy, i wygląda okej... Nie mam pomysłu co robić

0

A na pewno jest to normalne ciało, nie-statyczne? Czy grawitacja w ogóle działa na to ciało? (zdaje się, że powinno być dynamiczne).

Problem jest taki, że nie pamiętam, czy implementując tego chainShape'a dotykałem inny kod,

Jest rozwiązanie na to - robić często commity w Git.

1 użytkowników online, w tym zalogowanych: 0, gości: 1