Skocz do zawartości

Czy można tak zrobić?


Rekomendowane odpowiedzi

Czy można zrobić tak że gdy zostanie skasowany obiekt, zostawał jego sprite.

Lub zrobić coś takiego, że obiekt zapisuje index swojego sprita jego x y i się kasuję potem następny to robi, po czym inny obiekt rysuje sprite tych obiektów.

Jeśli ktoś napiszę skrypt będę bardzo wdzięczy ;)

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Zeby zostawał sam sprite ? przecież potrzebny jest obiekt żeby było widać chyba że instance_create(x,y,objekt)

No wiem że raczej się tak nie da więc:

Lub zrobić coś takiego, że obiekt zapisuje index swojego sprita jego x y i się kasuję potem następny to robi, po czym inny obiekt rysuje sprite tych obiektów.
;)
Odnośnik do komentarza
Udostępnij na innych stronach

Da sie bez obiektu :P

GML
draw_clear(c_white)

draw_sprite_ext(sprite_index,image_index,sprite_get_xoffset(sprite_index),sprite_get_yoffset(sprite_index),image_xscale,image_yscale,image_angle,-1,image_alpha)

bac=background_create_from_screen(0,0, sprite_get_width(sprite_index) ,sprite_get_height(sprite_index),1,1,1)

tile_add(bac,0,0,sprite_get_width(sprite_index) ,sprite_get_height(sprite_index),x,y,depth)

 

Nie mam pojęcia czy działa xD

Odnośnik do komentarza
Udostępnij na innych stronach

Da sie bez obiektu

A gdzie dasz ten kod? :)

 

E: No i background_create_from_screen w drawie to NIEWIARYGODNIE ZŁY POMYSŁ

 

Stwórz obiekt oGra. W create daj

GML
spr_x[0] = 0;

spr_y[0] = 0;

spr_sprite[0] = 0;

spr_count = 0;

I w niszczeniu obiektu

GML
oGra.spr_x[oGra.spr_count] = x;

oGra.spr_y[oGra.spr_count] = y;

oGra.spr_sprite[oGra.spr_count] = sprite_index;

oGra.spr_count += 1;

Draw oGra

GML
for (i=0; i<spr_count; i+=1)

draw_sprite(spr_sprite,0,spr_x,spr_y);

Nie sprawdzałem. Powinno zadziałać.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
draw_clear(c_white)

draw_sprite_ext(sprite_index,image_index,sprite_get_xoffset(sprite_index),sprite_get_yoffset(sprite_index),image_xscale,image_yscale,image_angle,-1,image_alpha)

bac=background_create_from_screen(0,0, sprite_get_width(sprite_index) ,sprite_get_height(sprite_index),1,1,1)

tile_add(bac,0,0,sprite_get_width(sprite_index) ,sprite_get_height(sprite_index), x-sprite_get_xoffset(sprite_index) ,y-sprite_get_yoffset(sprite_index),depth)

Poprawka :)

 

Z draw_sprite_ext?
Tak, sam sie przekonaj że działa :P

 

EDIT:

Ostateczna poprawka! XD

Lecz w tej poprawce nie można dawać z image_angle ponieważ nie można dać kąta tilowi xD

GML
draw_clear(c_white)

draw_sprite(sprite_index,image_index,sprite_get_xoffset(sprite_index),sprite_get_yoffset(sprite_index))

bac=background_create_from_screen(0,0, sprite_get_width(sprite_index) ,sprite_get_height(sprite_index),1,1,1)

til=tile_add(bac,0,0,sprite_get_width(sprite_index) ,sprite_get_height(sprite_index), x-sprite_get_xoffset(sprite_index) ,y-sprite_get_yoffset(sprite_index),depth)

 

tile_set_alpha(til,image_alpha)

tile_set_blend(til,image_blend)

tile_set_depth(til,depth)

tile_set_scale(til,image_xscale,image_yscale)

Odnośnik do komentarza
Udostępnij na innych stronach

A gdzie dasz ten kod? :)

 

E: No i background_create_from_screen w drawie to NIEWIARYGODNIE ZŁY POMYSŁ

 

Stwórz obiekt oGra. W create daj

GML
spr_x[0] = 0;

spr_y[0] = 0;

spr_sprite[0] = 0;

spr_count = 0;

I w niszczeniu obiektu

GML
oGra.spr_x[oGra.spr_count] = x;

oGra.spr_y[oGra.spr_count] = y;

oGra.spr_sprite[oGra.spr_count] = sprite_index;

oGra.spr_count += 1;

Draw oGra

GML
for (i=0; i<spr_count; i+=1)

draw_sprite(spr_sprite,0,spr_x,spr_y);

Nie sprawdzałem. Powinno zadziałać.

 

Dzięki Matthew, twój kod najbardziej mi pasuje. Oczywiście wszystko działa jak trzeba, będziesz w credits ;p.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
wystarczy, ze oGra bedzie mial mniejsze ID od pozostalych obiektow (czytaj najpierw postaw w roomie oGra, potem reszte obiektow) :)

EDIT: wiem ze to glupio brzmi ale u mnie tak dziala :)

Działa. Tylko co mam zrobić jak mam już utworzonego rooma z setkami objektów, mam robić od nowa?

Czy można jakoś zmienić ID oGra na mniejszy?

Odnośnik do komentarza
Udostępnij na innych stronach

Musisz wyczyścić room

a jakiś inny sposób?

plz wymyślcie coś :(

 

EDIT:

Hehe, ale sposób znalazłem ;p

Zrobiłem timeline i ustawiłem na 1 więc akcja dodawania sprite do tablicy wykonuje się kiedy oGra już istnieje.

 

Thx wszystkim za pomoc. ;)

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ę...