Trust Temat założony przez niniejszego użytkownika |
» 2012-05-04 15:42:37 Witam ! Napisałem kod który wykrywa kolizję. Jednak działa on piksel w piksel. Zrobiłem mały rysunek: http://odsiebie.pl/cgfndutgbzlc/kolizja_forum1.jpg.html Co muszę pozmieniać, aby kolizję wykrywały się również gdy samochodem 1 uderzę w samochód 2 np. lewym górnym rogiem (kx7,ky8) ? Oto kawałek kody który odpowiada za kolizje:
int ky1 = 0, kx2 = 0, kx3 = 0, ky4 = 0, kx5 = 0, ky6 = 0, kx7 = 0, ky8 = 0;
kx2 = s1_x; ky1 = 52 + s1_y;
kx3 = 41 + s1_x; ky4 = s1_y;
kx5 = s1_x + 41; ky6 = s1_y + 52;
kx7 = s1_x; ky8 = s1_y;
int kx9 = 0, ky10 = 0, kx11 = 0, ky12 = 0, kx13 = 0, ky14 = 0, kx15 = 0, ky16 = 0;
ky10 = 52 + s2_y; kx9 = s2_x;
kx11 = 41 + s2_x; ky12 = s2_y;
kx13 = s2_x + 41; ky14 = s2_y + 52;
kx15 = s2_x; ky16 = s2_y;
textprintf_ex( screen, font, 10, 10, makecol( 255, 255, 255 ), - 1, "ky1: %d", ky1 ); textprintf_ex( screen, font, 10, 20, makecol( 255, 255, 255 ), - 1, "kx2: %d", kx2 ); textprintf_ex( screen, font, 10, 30, makecol( 255, 255, 255 ), - 1, "kx3: %d", kx3 ); textprintf_ex( screen, font, 10, 40, makecol( 255, 255, 255 ), - 1, "ky4: %d", ky4 ); textprintf_ex( screen, font, 10, 50, makecol( 255, 255, 255 ), - 1, "kx5: %d", kx5 ); textprintf_ex( screen, font, 10, 60, makecol( 255, 255, 255 ), - 1, "ky6: %d", ky6 ); textprintf_ex( screen, font, 10, 70, makecol( 255, 255, 255 ), - 1, "kx7: %d", kx7 ); textprintf_ex( screen, font, 10, 80, makecol( 255, 255, 255 ), - 1, "ky8: %d", ky8 ); textprintf_ex( screen, font, 10, 90, makecol( 255, 255, 255 ), - 1, "kx9: %d", kx9 ); textprintf_ex( screen, font, 10, 100, makecol( 255, 255, 255 ), - 1, "ky10: %d", ky10 ); textprintf_ex( screen, font, 10, 110, makecol( 255, 255, 255 ), - 1, "kx11: %d", kx11 ); textprintf_ex( screen, font, 10, 120, makecol( 255, 255, 255 ), - 1, "ky12: %d", ky12 ); textprintf_ex( screen, font, 10, 130, makecol( 255, 255, 255 ), - 1, "kx13: %d", kx13 ); textprintf_ex( screen, font, 10, 140, makecol( 255, 255, 255 ), - 1, "ky14: %d", ky14 ); textprintf_ex( screen, font, 10, 150, makecol( 255, 255, 255 ), - 1, "kx15: %d", kx15 ); textprintf_ex( screen, font, 10, 160, makecol( 255, 255, 255 ), - 1, "ky16: %d", ky16 );
if( kx11 >= kx7 && kx13 >= kx2 && ky12 <= ky8 && ky14 >= ky1 ) { textout_ex( MAPA, font, "prawy bok auta 2 kolizja !", 0, 0, makecol( 255, 255, 255 ), - 1 ); s1_x = s1_x + 2; s2_x = s2_x - 2; }
if( ky8 >= ky10 && ky14 >= ky4 && kx12 <= kx9 && kx13 >= kx3 ) { textout_ex( MAPA, font, "tyl auta 2 Kolizja !", 250, 0, makecol( 255, 255, 255 ), - 1 ); s2_y = s2_y - 3; s1_y = s1_y + 1; }
|