Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OPENGL] Przedwczesna kolizja obiektów

Ostatnio zmodyfikowano 2011-10-22 11:53
Autor Wiadomość
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:

C/C++
if( kolizja( player.x, player.y, player.width, player.height, rect.x, rect.y, rect.width, rect.height ) == true ) {
    rect.y += 0.025f;
P-42389
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.
P-42390
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ę.

C/C++
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 );
}
P-42391
akwes
» 2011-10-21 22:20:33
no i chyba mamy sprawcę
P-42402
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!?
P-42414
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?
C/C++
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
P-42423
m4tx
» 2011-10-22 11:53:10
» KursyKurs STC kurs
P-42426
« 1 »
  Strona 1 z 1