MZG Opublikowano 15 Sierpnia 2012 Opublikowano 15 Sierpnia 2012 Witam. Próbuje swoich sił w bibliotece Allegro i mam pewien irytujący problem którego nie umiem rozwiązać. (Wspomnę że jestem początkujący, więc to jest błahy problem). Przykładowo - mam grę(jeśli można to tak nazwać) w której chodzę czerwoną kulką po ekranie. Chciałem aby jej prędkość była napisana w środku jej samej, w tym celu użyłem funkcji "textout_ex" z koordynatami skierowanymi na środek owej kulki. I tu pojawia się problem, tekst jest za kulką a nie przed nią. Jest jakiś sposób żeby to kontrolować "co będzie na czym"? Sposób żeby każdy napis lub sprite miał swoją warstwę. Żebym np. kulka była NA obrazku ziemi a POD teoretycznym "dachem"(patrząc z góry kulka po prostu schowała by się pod prostokąt)?
Will Opublikowano 16 Sierpnia 2012 Opublikowano 16 Sierpnia 2012 Rysuj je w odpowiedniej kolejności, najpierw ludek a potem napis. Nie pamiętam już jak tam jest zbudowana ta biblioteka ale powinna być wbudowana możliwość ustawiania dla obiektów wartości Depth/Z/głębokość. Ostatecznie możesz coś takiego napisać samemu, sortujesz listę wszystkich obiektów według parametru głębokości a potem rysujesz je zaczynając od tych, które są"najdalej".
MZG Opublikowano 16 Sierpnia 2012 Autor Opublikowano 16 Sierpnia 2012 No właśnie kolejność nie ma nic do rzeczy. Jakkolwiek bym kolejność nie ułożył ZAWSZE napis będzie za spritem. A co do parametru głębokości - to nigdzie go nie widzę i nie mam pomysłu jak on mógłby działać :/
waxx Opublikowano 16 Sierpnia 2012 Opublikowano 16 Sierpnia 2012 robisz cos zle bo kolejnosc ma znaczenie :)
MZG Opublikowano 16 Sierpnia 2012 Autor Opublikowano 16 Sierpnia 2012 int draw_ball() { draw_sprite(bufor, kulka, b_x, b_y); blit( bufor1, screen, 0, 0, 0, 0, 1180, 720 ); } Tym kodem rysuje kulkę. int draw_text() { textout_ex(bufor, font, "jakiśtam tekst", 400, 10,makecol(0, 0, 0), -1); } Tym tekst. while (!key[KEY_ESC]) { (...fps...) while(fps_licz > 0) { int fps_stary_licz = fps_licz; hero.move_ball(); hero.speed_ball(); fps_licz--; if(fps_stary_licz <= fps_licz) break; } (...inne fps...) system.draw_text(); hero.draw_ball(); hero.debug(); clear_to_color(bufor, makecol(255,255,255)); textprintf_ex(bufor, font, 10, 10, makecol(0, 0,0),-1, "FPS:%d", fps_fps); } A to pętla gry. Tyle z kodem, jakoś sam nie wiem po co go pokazywać. Chciałbym wiedzieć jak zrobić te warstwy, bo kolejność w przypadku napisów chyba nie ma znaczenia :/
waxx Opublikowano 16 Sierpnia 2012 Opublikowano 16 Sierpnia 2012 system.draw_text(); hero.draw_ball(); ja tu widze jakbyes rysowal wpierw tekst :P
MZG Opublikowano 16 Sierpnia 2012 Autor Opublikowano 16 Sierpnia 2012 Problem rozwiązany :D. Ale nie, nie chodziło o przestawienie (próbowałem wcześniej), tylko o to że napis raz rzutowany na ekran nie był odświeżany. Czyli nie przechodził przez bufora, więc gdyby się ruszał zostawiał by ślady. Teraz jest wszystko dobrze :D Dzięki za to że chciało wam się w ogóle odpisywać, temat do zamknięcia.
Rekomendowane odpowiedzi