Źle działające kolizje
Ostatnio zmodyfikowano 2009-03-21 20:59
DejaVu |
» 2009-03-21 18:48:58 Wklej linijkę, która wywołuje funkcję kolizji. Moim zdaniem masz za dużego ludka o 1 px lub za dużego potworka o 1px (albo jedno i drugie). |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 19:04:57 if( kolizja( player_x, player_y, duch_x, duch_y ) ) (szerokość i wysokość pominąłem, bo oba mają 40x40 zresztą możesz to sprawdzić w folderze z grą, który wysłałem) |
|
DejaVu |
» 2009-03-21 19:10:32 Cóż... czekasz na gotowe rozwiązanie, a odpowiedź masz w poście wyżej. Podpowiedź: int szerokosc = 40; int x1 = pozycja_x; int x2 = pozycja_x + szerokosc - 1; if( x2 - x1 + 1 == szerokosc ) { cout << "ok"; } else { cout << "jest różnica"; }
|
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 19:43:02 No nie czekam na gotowe rozwiązanie, tylko na jakieś nakierowanie, np. przyczyny problemu. Jedną podałeś - ale ta u mnie nie występuję. A tak BTW. W tym kodzie powinno być chyba x2=player_x+szerokość, bo tak jak masz, to jak jest dobrze - pokazuje, że jest źle. EDIT: Zmieniłem 40 na 39 i działa ;P Dzięki. Pozdrawiam |
|
DejaVu |
» 2009-03-21 19:49:22 Poprawiłem kod. Narysuj sobie kwadrat na kartce o boku 1cm. Policz ile masz punktów przecinających się z kratkami, a ile jest kratek w tej samej osi. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 20:59:27 Tzn. działa już wszystko. To 39 zmieniłem w funkcji kolizji. Pozdr |
|
1 « 2 » |