[Allegro 5] Nieskończone przewijanie bitmapy
Ostatnio zmodyfikowano 2015-08-17 22:34
CTRL85 Temat założony przez niniejszego użytkownika |
[Allegro 5] Nieskończone przewijanie bitmapy » 2015-08-17 14:30:42 Witam!
Robię grę i potrzebuję uzyskać efekt nieskończonego przewijania się tła. Wie ktoś jak to zrobić? Po kilku nieudanych próbach stwierdziłem, że najlepiej będzie to zrobić używając dwóch bitmap, jednak nie wiem jak ustalić ich pozycje tak aby nie było widać przeskoku.
Pozdrawiam. |
|
pekfos |
» 2015-08-17 18:30:47 Jak przewijasz tło w lewo, to pozycja bitmapy w osi X to 0 lub mniej. Jeśli pozycja bitmapy + jej szerokość jest mniejsza od 0, to nie musisz jej wyświetlać, bo jest w całości ukryta za lewą krawędzią ekranu. A jeśli jest mniejsza od szerokości ekranu, to nie zakrywa całości. Od tej krawędzi bitmapy wyświetlasz następną. I tak w kółko, aż zakryjesz cały ekran w osi X. I analogicznie dla innych kierunków przewijania i osi Y, jeśli jest to potrzebne. |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2015-08-17 22:34:50 Dzięki za pomoc. Ruch w płaszczyźnie y, zostawiam uproszczony kod dla potomnych: int background_position =( al_get_bitmap_height( background_bitmap1 ) ) *( - 1 ) + resolution_y; int background_height = al_get_bitmap_height( background_bitmap1 );
while( 1 ) { if( game_event.type == ALLEGRO_EVENT_TIMER ) { background_position += 6; if( background_position > background_height ) background_position = 0; } if( al_is_event_queue_empty( game_queue ) ) { al_draw_bitmap( background_bitmap1, 0, background_position, 0 ); if( background_position > 0 ) al_draw_bitmap( background_bitmap2, 0, background_position - background_height, 0 ); } }
Pewnie da się zrobić prościej, ale takie rozwiązanie działa i jestem zadowolony. |
|
« 1 » |