Forczek Temat założony przez niniejszego użytkownika |
[Allegro 4] Problem z animacją i skokiem. » 2012-09-21 20:55:48 Siemka, mam problem: 1. Z animacją 2. Ze skokiem. no to tak: 1. Jeżeli postać idzie to dwie klatki nakładają się na siebie. Jeżeli jest atak i postać idzie wszystko jest dobrze. 2. Jeżeli postać idzie, to skok nie działa pełnie. Kiedy naciskam W skok jest mniej więcej w połowie do góry potem muszę dalej trzymać aby skok się zakończył. Jeżeli postać nie porusza się skok odbywa się bez problemu. Dam tą część kodu w której są zawarte błędy: if( menu == 2 ) { blit( niebo, bufor, 0, 0, 0, 0, 1000, 700 ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 0 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 1 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 2 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 3 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 4 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 5 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 6 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 7 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 8 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 9 ], 500, ziemia->w, ziemia->h ); masked_blit( ziemia, bufor, 0, 0, ziemi[ 10 ], 500, ziemia->w, ziemia->h ); if( mb == 1 ) { atakk = true; } if( key[ KEY_D ] ) { animacja = true; if( animacja == true ) { chodzenie = true; ziemi[ 0 ] --; ziemi[ 1 ] --; ziemi[ 2 ] --; ziemi[ 3 ] --; ziemi[ 4 ] --; ziemi[ 5 ] --; ziemi[ 6 ] --; ziemi[ 7 ] --; ziemi[ 8 ] --; ziemi[ 9 ] --; ziemi[ 10 ] --; if( frame < 50 ) { draw_sprite( bufor, chodzenie1, wiking_x, wiking_y ); } else if( frame >= 50 && frame < 100 ) { draw_sprite( bufor, chodzenie2, wiking_x, wiking_y ); } if( atakk == false ) { masked_blit( wiking, bufor, 0, 0, wiking_x, wiking_y, wiking->w, wiking->h ); } } } else { animacja = false; chodzenie = false; } if( atakk == true ) { animacja = true; if( animacja == true ) { if( frame < 50 ) { draw_sprite( bufor, atak1, wiking_x, wiking_y ); } else if( frame >= 50 && frame < 100 ) { draw_sprite( bufor, atak2, wiking_x, wiking_y ); } if( chodzenie == true ) { if( frame < 50 ) { draw_sprite( bufor, chodzenie1, wiking_x, wiking_y ); } else if( frame >= 50 && frame < 100 ) { draw_sprite( bufor, chodzenie2, wiking_x, wiking_y ); } } else { masked_blit( stanie, bufor, 0, 0, wiking_x, wiking_y, stanie->w, stanie->h ); } } } else { animacja = false; } if( key[ KEY_W ] ) { skok[ 0 ] = true; } if( skok[ 0 ] == true ) { if( skok[ 1 ] == true ) { wiking_y--; if( wiking_y == 175 ) { skok[ 1 ] = false; } } if( skok[ 1 ] == false ) { wiking_y++; if( wiking_y == 375 ) { skok[ 0 ] = false; skok[ 1 ] = true; } } } if( animacja == false ) { masked_blit( stanie, bufor, 0, 0, wiking_x, wiking_y, stanie->w, stanie->h ); masked_blit( wiking, bufor, 0, 0, wiking_x, wiking_y, wiking->w, wiking->h ); } if( ziemi[ 1 ] == 0 ) { ziemi[ 0 ] = 0; ziemi[ 1 ] = 100; ziemi[ 2 ] = 200; ziemi[ 3 ] = 300; ziemi[ 4 ] = 400; ziemi[ 5 ] = 500; ziemi[ 6 ] = 600; ziemi[ 7 ] = 700; ziemi[ 8 ] = 800; ziemi[ 9 ] = 900; ziemi[ 10 ] = 1000; } if( key[ KEY_Q ] ) { menu = 1; } blit( bufor, screen, 0, 0, 0, 0, 1000, 700 ); }
Jeżeli są jakieś pytania bez których nie rozwiążecie problemu, piszcie. |