koziu Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 Hej, poszukuję wskazówki jak rozwiązać następującą kwestię. Mam jakiś obiekt ze spritem (dajmy na to, że sprite to tort). Po kliknięciu go chcę aby rozpadł się na kawałki (o losowych kształtach). Mój pomysł jest taki, żeby zrobić w destroy oTort kilka obiektów oKawalek, którym w create cać sprite_index = ... No i właśnie co? Jak zrobić coś takiego, żeby mi zwrócił część sprite'a o losowych kształtach? draw_sprite_part pozwala wziąc kawałek sprite ale prostokątny. Można jakoś na przykład podzielić go na dajmy na to trójkąty? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
zelman Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 najlepiej zrob tego animacje. Albo partykle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
koziu Opublikowano 12 Maja 2011 Autor Udostępnij Opublikowano 12 Maja 2011 Gdyby chodziło o jeden obiekt to bym się zastanowił nad takim rozwiązaniem ale ich będzie pewnie dużo. A Partykle ;) jak zrobić ze sprit'a w różnych kształtach? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 Stwórz sobie jakiegokolwiek sprita, który kształtem będzie przypominał odłamek, potem stwórz jeszcze kilka takich, ale jako kolejne klatki sprita. Potem stwórz sobie obiekt Odłamek i kod do niego z przykładu gnyska (sterowanie_padem) GML (Create) direction=round(random(360)); speed=2+round(random(10)); alpha=1.3; img=round(random(ilość_klatek-1)); GML (Step) if speed>0 then speed-=0.5 else speed=0; if alpha>0 then alpha-=0.01 else instance_destroy(); GML (Draw) draw_sprite_ext(spr_odlamek,img,x,y,1,1,direction,c_white,alpha); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 Zamiast: GML if speed>0 then speed-=0.5 else speed=0; można: GML speed = max(0,speed-0.5) draw_sprite_part pozwala pobrać prostokątny kawałek sprite'a, ale można użyć trójkątnych masek, surface'ów, primitive'ów... Ale dla niezbyt zaawansowanych (a podejrzewam, że Ty należysz do tej grupy : ) ) rozwiązanie Magnusa powinno wystarczyć. @Magnus: myślałem, że pochodzisz z Szarogórza ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 Ja na to rozwiązanie przypadkiem się natknąłem, jak szukałem czegoś do obsługi pada. @Muu Tak, kiedyś, ale przeprowadzka :D I nie grzebaj mi w profilu na SF.gram.pl ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 12 Maja 2011 Udostępnij Opublikowano 12 Maja 2011 Nie grzebałem. Ale mogłem się domyślić :) koniec offtopu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
koziu Opublikowano 13 Maja 2011 Autor Udostępnij Opublikowano 13 Maja 2011 Chyba mam pomysł. Nie wiem jeszcze czy dobry bo nie mam jak chwilowo sprawdzić ale o opinie mogę już zapytać. 1. Zrobię maskę maskSprite (wymiarach np. 16x16 całe czarne z białym np. trójkątem) 2. Obiekt oFragment tworzony skryptem, który nada nowemu obiektowi sprite a następnie przykryje mu przeźroczystość tą maską: create_oFragment(x, y, spriteIndex) GML var tmp; tmp = instance_create_(x, y, oFragment); sprite_assign (tmp.sprite_index, spriteIndex); sprite_set_alpha_from_sprite(tmp.sprite_index, maskSprite) tmp.direction = random(360); tmp.speed = 2 + random(2); A w draw oFragment: GML alpha -= 0.05; speed -= 0.05; if(alpha < 0) { sprite_delete(sprite_index); instance_destroy(); } else { draw_self(); } Moje wątpliwości: Czy pamięć po tak utworzonym sprite się zwolni? Czy muszę to zrobić ręcznie [Nie zwolni się :) - sprite_delete(sprite_index) - thx Tymon] Tego teraz nie sprawdzę, ale co się stanie z obszarem poza maską [np. sprite do zakrycia 32x32, maska 16x16 - obszar poza będzie zakryty / odkryty?], najwyżej będę kombinował z tworzeniem kopii maski i jej przeskalowaniem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Maja 2011 Udostępnij Opublikowano 13 Maja 2011 Czy pamięć po tak utworzonym sprite się zwolni? Czy muszę to zrobić ręcznie [Wydaje mi się, że zwolni się wraz ze śmiercią uchwytu sprite_index]Nie ma tak dobrze. Jedziesz ręcznie. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 23 Maja 2011 Udostępnij Opublikowano 23 Maja 2011 O rozpadaniu się obiektu było też tu. Może coś Ci podejdzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę