[Allegro] Problem z funkcją tworzącą sprite'y
Ostatnio zmodyfikowano 2009-07-04 21:18
Rares Temat założony przez niniejszego użytkownika |
[Allegro] Problem z funkcją tworzącą sprite'y » 2009-07-04 18:25:52 Chciałem stworzyć sprite'y samochodu do mojej gry. Tak jak zrobił to Easykoder ( http://www.easykoder.vot.pl/arty/samochodzik) w tej grafice: http://www.easykoder.vot.pl/web/arty/obrazki/samochod.jpgJednak jest to niewydajne. Postanowiłem stworzyć bitmapę o wymiarach 1260x280 px, oraz jedną bitmapę samochodu (wymiary - 70x70 px) w jednej pozycji. Potem w programie uruchomiłem pętlę, która obracała sprite samochodu o 5 stopni, następnie kopiowała obrócony sprite na bitmapę do tego przeznaczoną (to ta o wymiarach 1260x280). Miałem uzyskać podobny efekt do tego jaki uzyskał Easykoder. Jednak wyszło mi coś takiego: http://img125.imageshack.us/img125/4636/dlaa.pngOto pętla od kopiowania sprite'a i jego obracania: for( int i = 0; i < 4; i++ ) { for( int j = 0; j < 18; j++ ) { clear_to_color( bufor_sam_work, makecol( 255, 0, 255 ) ); rotate_sprite( bufor_sam_work, car, 0 + xbsw, 0 + ybsw, ftofix( angle ) ); blit( bufor_sam_work, bufor_sam, 0, 0, j * 70, i * 70, 70, 70 ); angle += 5; ybsw += 16; xbsw -= 13; if( j % 5 == 0 ) xbsw = 0; } }
Próbowałem to naprawić dodając dwie zmienne xbsw i ybsw, które będą dodawane do pozycji docelowej obróconego sprite'a, dzięki czemu samochód powinien się wyrównywać. O ile w pionie (ybsw) to zadziałało, to w poziomie mam problem. Grafika z samochodem: http://img78.imageshack.us/img78/8070/samochod.pngJak to naprawić? |
|
DejaVu |
» 2009-07-04 21:18:52 double kat = 0;
for( int y = 0; y < 4 * 70; y += 70 ) { for( int x = 0; x < 18; x += 70 ) { rotate_sprite( bufor_sam_work, car, x, y, ftofix( kat ) ); kat += 5; } } Jeśli obrazki się będą 'przysłaniały' - utwórz dodatkowy bufor do którego obracane obiekty będą trafiały. Kodu nie testowałem. |
|
« 1 » |