Gość Jypy Opublikowano 25 Czerwca 2009 Udostępnij Opublikowano 25 Czerwca 2009 Nie wiedziałem gdzie dokładnie dać ten temat bo jestem początkujący, ale "mój problem to złożone zagadnienie". Po kolei: Jest bohater i obiekt ściana. Obiekt ściana ma jakiś sprite. Chciałbym, żeby po naskoczeniu na obiekt ściana, ten "ścierał się" (coś takiego jak rysunek na tablicy ścierany gąbką). Dla tych co nie mają wyobraźni: Z tym, że to nie koniec. Chciałbym, żeby po naskoczeniu na ścianę np. z prawej to obiekt ściera się w przeciwną stronę. Jak naskoczę z góry - ściera się w dół. Starałem się wyjaśnić najlepiej jak umiem ;-) Mam nadzieję, że zrozumiecie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
boom Opublikowano 25 Czerwca 2009 Udostępnij Opublikowano 25 Czerwca 2009 rzeczywiście złożone zagadnienie. na to ścieranie miałbym rozwiązanie nieco okrężne: duplikujesz sprita postaci tworzysz sprita takiego jak na twoim obrazku dajesz zduplikowanej postaci overplay ze spritem ścierania w obiekcie zmieniasz sprite_index przy kolizji ze ścianą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Czerwca 2009 Udostępnij Opublikowano 25 Czerwca 2009 nie do końca rozumiem ale chodzi ci ze jest obrazek i ma się tak zmniejszać ? : Jak tak to wiem jak musisz zrobić ... Robisz skrypt o jakiej nazwie chcesz , dajesz tam to : GML var _pos, _colMerge; if !argument5 {_pos = - ((argument2 / 100) * sprite_get_height(argument3)) + sprite_get_height(argument3);} else {_pos = -((argument2 / 100) * sprite_get_width(argument3)) + sprite_get_width(argument3);} _colMerge = c_white; if argument4 {if argument2>=50 {_colMerge=merge_color(c_white, c_green, argument2/150);} else {_colMerge=merge_color(c_red, c_white, argument2/75);} } if !argument5 { draw_sprite_part_ext(argument3, 0, 0, _pos, sprite_get_width(argument3), sprite_get_height(argument3) - _pos, argument0, argument1 + _pos, 1, 1, _colMerge, draw_get_alpha()) } else { draw_sprite_part_ext(argument3, 0, 0, 0, sprite_get_width(argument3) - _pos, sprite_get_height(argument3), argument0, argument1, 1, 1, _colMerge, draw_get_alpha()) } potem w create obiektu : zmienna = 100; maxzmienna=100; draw : GML skrypt(x,y,(zmienna/maxzmienna)*100,sprite_index,0,0); A jeśli ma być przeźroczysty to daj jeszcze pod to GML draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,przezroczystosc od 0 do 1); Trochę chyba pomieszalem ale powinno dzialać . zmieniaj zmienną żeby zmieniał się wymiar sprita . Jak będzie się źle "deformował" to ustaw origin sprita na 0 i sprawdź . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maxpayn Opublikowano 25 Czerwca 2009 Udostępnij Opublikowano 25 Czerwca 2009 Rozumiem ze tam gdzie zostanie zmazany ma byc przezroczysty. Musisz ustawić origin na 0, 0 ( choc, jakby bylo konieczne ustawienie na srodek, wtedy usun ze skryptu kolizji z graczem kod " + sprite_get_* / 2", nic nie powinno sie zepsuc ): GML (create) // Zmienne mowiace ile sprite jest zmazanego spr_left = 0; spr_width = sprite_get_width( sprite_index ); spr_top = 0; spr_height = sprite_get_height( sprite_index ); // Predkosc zmazywania ( ilosc pikseli na stepa ) spd_scieranie = 1; GML (kolizja z graczem) // Zmienna okreslajaca kierunek bohatera od obiektu var dir; dir = point_direction( x + sprite_get_width( sprite_index ) / 2, y + sprite_get_height( sprite_index ) / 2, gracz., gracz.y ) // Zamienianie kierunku na numer boku sprite if( dir >= 45 ) &&( dir <= 135 ) dir = 1; else if( dir >= 135 ) &&( dir <= 225 ) dir = 2; else if( dir >= 225 ) &&( dir <= 315 ) dir = 3; else dir = 0; // Mazanie sprite switch( dir ) { case 0: spr_width -= spd_scieranie; break; case 1: spr_top += spd_scieranie; break; case 2: spr_left += spd_scieranie; break; case 3: spr_height -= spd_scieranie; break; } // Akcja po zmazaniu calego if( spr_width - spr_left <= 0 ) or( spr_height - spr_top <= 0 ) { //... } GML (draw) // Rysowanie kawalka sprite draw_sprite_part( sprite_index, 0, spr_left, spr_top, spr_width - spr_left, spr_height - spr_top, x + spr_left, y + spr_top ); 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ę