Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C][Allegro]Zamalowywanie spritów z opóźnieniem

Ostatnio zmodyfikowano 2012-12-02 22:14
Autor Wiadomość
wisien92
Temat założony przez niniejszego użytkownika
[C][Allegro]Zamalowywanie spritów z opóźnieniem
» 2012-12-02 15:54:18
Witam , mam problem mam całą mechanike poruszania się pocisków oraz ich kolizje jednak pocisk lecąc zostawia za sobą obrazek kolejnego w efekcie powstaje sznurek składający się z obrazków pocisku ... chciałem użyć timera który wykonuje się z pewnym opóźnieniem(np.5) i w miejscu obrazka rysuje element tła .... tylko nie wiem jak to do końca zrobić

C/C++
while( speed1 > 0 )
{
    for( i = 0; i <= NUM_BULLETS; i++ )
    {
       
        //poruszanie pociskow  
        if( bullets[ i ].active == 1 )
        {
           
           
            draw_sprite(
            background,
            bullet_sprite,
            bullets[ i ].x,
            bullets[ i ].y );
           
            while( speed2 > 0 )
            {
                //masked_blit( background, bufor , 0,0, bullet[i].x, bullet[i].y, bullet_sprite ->w, bullet_sprite ->h);            
                //clear_bitmap(bullet_sprite);
                speed2--;
            }
           
           
            if( bullets[ i ].face == 0 )
                 bullets[ i ].x--;
           
            if( bullets[ i ].face == 1 )
                 bullets[ i ].y++;
           
            if( bullets[ i ].face == 2 )
                 bullets[ i ].x++;
           
            if( bullets[ i ].face == 3 )
                 bullets[ i ].y--;
           
           
           
           
            //kolizje pocisku ze sciana:    
            if( bullets[ i ].x <= 20 && bullets[ i ].y >= 0 && bullets[ i ].y <= 750 ) { bullets[ i ].active = 0; } //lewa sciana ekranu
            if( bullets[ i ].x >= 1000 && bullets[ i ].y >= 0 && bullets[ i ].y <= 750 ) { bullets[ i ].active = 0; } // prawa sciana ekranu
            if( bullets[ i ].x >= 0 && bullets[ i ].x <= 1020 && bullets[ i ].y <= 85 ) { bullets[ i ].active = 0; } // gorna sciana ekranu
            if( bullets[ i ].x >= 0 && bullets[ i ].x <= 1020 && bullets[ i ].y >= 745 ) { bullets[ i ].active = 0; } // dolna sciana ekranu
           
            //clear_bitmap(bullet_sprite);
            //masked_blit( background, bufor , 0,0, bullet[i].x, bullet[i].y, bullet_sprite ->w, bullet_sprite ->h);                                                                   
        }
       
    }
    speed1--;
}

jakaś pomoć?
P-70249
Mrovqa
» 2012-12-02 15:57:03
Zrób sobie tablice gdzie zapisujesz ostatnie N pozycji pocisku (w standardowym przypadku można to samemu wyliczyć). Potem tylko przy rysowaniu zaczynasz rysować N pozycji wcześniej do aktualnej pozycji. Pamiętaj, by uwzględnić początek i koniec animacji (<N pozycji).
P-70250
wisien92
Temat założony przez niniejszego użytkownika
» 2012-12-02 22:14:17
udało się ... może nie jest idealnie ale jest juz jakaś baza, którą można poprawiać :) dzięki
P-70263
« 1 »
  Strona 1 z 1