Źle działające kolizje
Ostatnio zmodyfikowano 2009-03-21 20:59
Ju1ian Temat założony przez niniejszego użytkownika |
Źle działające kolizje » 2009-03-21 17:39:21 Witam ponownie :) Do swojej gierki chciałem dodać przeciwników. Zrobiłem, aby poruszali się w tę i wew tę ;P I nadszedł czas na kolizje (jak go dotchniesz tracisz życie). Wiedziałem, że jest to proste, gdyż wcześniej coś takiego robiłem. Teraz - ku mojemu zdziwieniu, gdy jestem obok pola po którym rusza się przeciwnik (poruszam się o 1 kafel, a duch o kilka pixeli (wolniej)) gdy przeciwnik był Obok (właśnie tak) nastała kolizja. Z drugiej strony próbowałem, ale tak nie było. Z dołu było, a z góry nie. Poza tym wszystko jest dobrze. Kodu tej kolizji już używałem (Autor: EasyKoder). Oto kod: bool kolizja( int x1, int y1, int x2, int y2 ) { if( x2 <= x1 + 40 && x2 > x1 && y2 >= y1 && y2 <= y1 + 40 ) return true; else if( x2 <= x1 + 40 && x2 > x1 && y2 + 40 >= y1 && y2 + 40 <= y1 + 40 ) return true; else if( x2 + 40 <= x1 + 40 && x2 + 40 > x1 && y2 >= y1 && y2 <= y1 + 40 ) return true; else if( x2 + 40 <= x1 + 40 && x2 + 40 > x1 && y2 + 40 >= y1 && y2 + 40 <= y1 + 40 ) return true; else return false; }; Dodam, że przeciwnik i ludek mają wymiary 40x40. Pozdrawiam. Ju1ian. |
|
DejaVu |
» 2009-03-21 17:48:00 Ten kod ma chyba błąd (nie analizowałem), ale jakiś czas temu temat kolizji był poruszany - poszukam i wkleję linka. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 17:48:56 Hmm... Ale wcześniej (rok temu) miałem ten sam i działał doskonale. |
|
DejaVu |
» 2009-03-21 17:56:43 |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 18:03:00 Zmieniłem i nadal jest ten sam problem. Chociaż się nie stykam - tracę życie ;/ |
|
DejaVu |
» 2009-03-21 18:08:29 Skoro jest tak jak mówisz to albo masz jakiegoś innego if'a, albo masz za dużo różowego tła dookoła ludka, które wpływa na to, że obiekt wizualnie jest mniejszy, a kolizji używasz wielkości obrazka. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 18:11:15 No ifa mam normalnego: if( kolizja(...) ) { zycie--; player.x = 40; } No, a obrazki oba są wielkości kwadratu o boku 40. A ludek porusza się o 40 px. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-03-21 18:41:04 |
|
« 1 » 2 |