Skocz do zawartości

draw_sprite z zewnątrz


Rekomendowane odpowiedzi

Mam 50 spritów (gif) załadowanych z zewnętrznego katalogu:

wall1.gif wall2.gif wall3.gif ... wall50.gif

czy jest jakiś łatwiejszy sposób wyrysowania ich automatycznie w jakiejś pętli niż tak:

GML
draw_sprite(picture('wall1.gif'),image_index,0,y);

draw_sprite(picture('wall2.gif'),image_index,5,y);

draw_sprite(picture('wall3.gif'),image_index,10,y);

...

draw_sprite(picture('wall50.gif'),image_index,250,y);

Odnośnik do komentarza
Udostępnij na innych stronach

spróbuj tak (nie mam pewności, czy to będzie działać):

GML (ladowanie spritow)
for(i=1; i<=50; i+=1)

global.spr_wall=sprite_add("wall"+string(i)+".gif", ...);

GML (rysowanie)
for(i=1; i<=50; i+=1)

draw_sprite(global.spr_wall,image_index,(i-1)*5,y);

poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle?

Odnośnik do komentarza
Udostępnij na innych stronach

spróbuj tak (nie mam pewności, czy to będzie działać):

GML (ladowanie spritow)for(i=1; i<=50; i+=1)

global.spr_wall=sprite_add("wall"+string(i)+".gif", ...);

GML (rysowanie)for(i=1; i<=50; i+=1)

draw_sprite(global.spr_wall,image_index,(i-1)*5,y);

poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle?

 

A nie powinno być znaczników { i } ?

Po for(i=1; i<=50; i+=1) i na zakończenie petli?

Odnośnik do komentarza
Udostępnij na innych stronach

spróbuj tak (nie mam pewności, czy to będzie działać):

GML (ladowanie spritow)for(i=1; i<=50; i+=1)

global.spr_wall=sprite_add("wall"+string(i)+".gif", ...);

GML (rysowanie)for(i=1; i<=50; i+=1)

draw_sprite(global.spr_wall,image_index,(i-1)*5,y);

poza tym mam nadzieję, że ładujesz te sprity przed roomem/grą, a nie ciągle?

O to mi chodziło :D Dziękuję

Odnośnik do komentarza
Udostępnij na innych stronach

a jeśli nie mam jednego obrazka (nie dlatego że usunąłem tylko po prostu chcę mieć tam lukę) np. wall25.gif i pętla rysuje po kolei i dochodzi do i=25 to wywala " Trying to draw non-existing sprite. ".

A ja bym chciał żeby pętla (skoro nie było nr 25) poleciała dalej i wyrysowała 26, 27, 28 itd.

Macie na to jakiś pomysł ?

Odnośnik do komentarza
Udostępnij na innych stronach

if(!sprite_exists(global.spr_wall))continue;

 

ale to i tak wolne rozwiazanie, szybsze wiaze sie z ustawianiem wartosci tego globala na -1 podczas kasowania sprajta, i wtedy: if(global.spr_wall<0)continue;

Odnośnik do komentarza
Udostępnij na innych stronach

if(!sprite_exists(global.spr_wall))continue;

 

ale to i tak wolne rozwiazanie, szybsze wiaze sie z ustawianiem wartosci tego globala na -1 podczas kasowania sprajta, i wtedy: if(global.spr_wall<0)continue;

Dobre rozwiązanie :thumbsup:

Nie rozumiem tylko drugiej części podpowiedzi na temat wartości tego globala na -1

 

Korzystanie z pierwszej formuły będzie spowalniać grę ?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...