wojownik266 Temat założony przez niniejszego użytkownika |
[OPENGL] Przedwczesna kolizja obiektów » 2011-10-21 17:26:39 Wie może ktoś, co może być przyczyną tego że dwa obiekty wchodzą z sobą w kolizję która to kolizja działa, tylko w tym problem że kolizja następuje dużo wcześniej zanim obiekty się ze sobą zdążą zetknąć? W chwili obecnej kolizja następuję o jakieś dwie jednostki wcześniej tak że obiekty się ze sobą niestykają. Kod odpowiedzialny za kolizję 2D ma się tak: if( kolizja( player.x, player.y, player.width, player.height, rect.x, rect.y, rect.width, rect.height ) == true ) { rect.y += 0.025f; |
|
pekfos |
» 2011-10-21 17:59:55 Kod odpowiedzialny za kolizję 2D ma się tak: |
kłamiesz! daj kod funkcji kolizja() bo to ona jest za to odpowiedzialna i najwyraźniej jest zła. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-10-21 18:07:11 Bardzo proszę o to kod funkcji kolizja i daję słowo że nie kłamię. bool kolizja( float x1, float y1, float s1, float w1, float x2, float y2, float s2, float w2 ) { if( x1 + s1 >= x2 && x1 <= x2 + s2 && y1 + w1 >= y2 && y1 <= y2 + w2 ) return( true ); return( false ); } |
|
akwes |
» 2011-10-21 22:20:33 no i chyba mamy sprawcę |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-10-22 10:02:47 Bardzo serdecznie dziękuję wszystkim za odpowiedzi, ale ja dalej nie wiem co w powyższym kodzie jest źle? Dodam jescze że piszę grę 2D w OGL w której kolidują ze sobą dwa kwadraty i ... Może jakiś kawałek kodu jako przykładzik by ktoś zamieścił? Byłbym mu za to bardzo wdzięczny. Więc!? |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-10-22 11:42:14 Wydaje mi się że problem przedwczesnej kolizji udało mi się połowicznie rozwiązać. Połowiczne rozwiązanie eliminuje przedwczesną kolizję. Tzn. Obiekty kolidują dokładnie w momencie zetknięcia się ze sobą. Czy to rozwiązanie jest poprawne i czy trzeba je jeszcze jakoś zmodyfikować tak aby było na 100% pewne?
if( kolizja( player.x - player.width / 2, player.y - player.width / 2, player.width, player.height, rect.x, rect.y, rect.width, rect.height ) == true ) { rect.y = 5.0f; }
p.s Co trzeba wpisać aby kod pojawił się w okienku |
|
m4tx |
» 2011-10-22 11:53:10 |
|
« 1 » |