pankracy Opublikowano 9 Marca 2016 Udostępnij Opublikowano 9 Marca 2016 Cześć wszystkim.. narysowałem sobie sprite wahadło,który składa się z dwóch sprotów 1.ostrze 2.łańcuch(mam też linkę i trzpień jako osobny sprite) No i chciałbym,żeby poruszało się to w ruchu wahadłowym...jak to też połączyć sobą???? bo w jednym spricie to ja mam już kod,ale tam tak jest,że już łańcuch daje mi obrażenia,a nie tylko ostrze,co jest idiotyczne.. Znalazłem tu projekt podobny,ale tu jest ruch okrężny,a mi chodzi o ruch wahadłowy i jak te dwa elementy ze sobą połączyć.. ostrze jako obiekt ,który daje obrażenia łańcuch trzpień linka jako sprite który nie daje obrażeń tu ten kod na ruch okrężny..można byłoby go użyć wykorzystać na ruch wahadłowy create obj_ostrze GML anim=0; aspd=1; x2=x; y2=y; dis=100; step GML x=x2+dis*cos(degtorad(anim)); y=y2+dis*sin(degtorad(anim)); anim+=aspd; draw GML for(a=0;a<7;a+=1) { draw_sprite(sprLancuch,0,x2+lengthdir_x(a*15,-anim),y2+lengthdir_y(a*15,-anim)); } draw_sprite_ext(sprite_index,image_index,round(x),round(y),image_xscale,image_yscale,image_angle,image_blend,image_alpha); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 9 Marca 2016 Udostępnij Opublikowano 9 Marca 2016 Równania ruchu wahadłowego dla dowolnego kąta nie są proste, ale istnieje forma dla małych kątów, która jest wygodna i dobrze je przybliża. W Create dodaj: GML tmp_t=0; gamma=30; //maksymalny kat wychylenia wahadla</span> W Step zmień GML anim+=1; na GML tmp_t+=K; //im wieksze K, tym szybsze wahadlo anim=gamma*dsin(tmp_t)-90; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Marca 2016 Autor Udostępnij Opublikowano 10 Marca 2016 Równania ruchu wahadłowego dla dowolnego kąta nie są proste, ale istnieje forma dla małych kątów, która jest wygodna i dobrze je przybliża. W Create dodaj: GMLtmp_t=0; gamma=30; //maksymalny kat wychylenia wahadla W Step zmień GMLanim+=1; na GMLtmp_t+=K; //im wieksze K, tym szybsze wahadlo anim=gamma*dsin(tmp_t)-90; Dzięki bardzo ładnie działa.. ustawiłem też inny kąt odchylenia i kierunek Mam jeszcze jedno pytanie..bo to się ładnie sprawdza przy cząstkowym spricie czyli draw_sprite_ext jak łącze to łańcuchem.. a co jak np mam sprita line stalową długą i chcę to połączyć z wahadłem? wtedy nie używać draw_sprite_ext rozumiem tylko innej funkcji? Załóżmy pomijam teraz łańcuch który składa się z jednego oczka a draw_sprite_ext samo narysuje mi kilka niżej oczek. mam teraz stalową linę jako całość jeden sprite,i nie chce np żeby mi coś dorysowało dodatkowo,tylko lina połączyła się ta stalowa z ostrzem? jak to wykonać w draw? tu niżej te draw sprawdza się np do łańcucha żeby połączyć z ostrzem,a jak to zrobić,że mam w całości sprite stalowa lina i chcę go z ostrzem połączyć? nie zmieniając wielkości tej stalowej liny? GML ///Wyswietlany lancuch i ostrze for(a=0;a<7;a+=1) { draw_sprite(spr_lancuch_od_ostrza,0,x2+lengthdir_x(a*15,-anim),y2+lengthdir_y(a*15,-anim)); } draw_sprite_ext(sprite_index,image_index,round(x),round(y),image_xscale,image_yscale,image_angle,image_blend,image_alpha); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 10 Marca 2016 Udostępnij Opublikowano 10 Marca 2016 GML //draw_sprite_line //argumenty: //sprite index, image index //x1,y1 - pozycja poczatku linii //x2,y2 - pozycja konca linii //wazne, aby sprite byl symetryczny, a origin sprite'a byl na jego srodku (ale tylko w osi Y, w osi X moze byc gdzie chce) var x1,y1,x2,y2; x1=argument2; x2=argument4; y1=argument3; y2=argument5; //tu byl kod //i go nie ma draw_sprite_ext(argument0,argument1, x1+(x2-x1)*(sprite_get_xoffset(sprite1)/sprite_get_width(sprite1)), y1+(y2-y1)*(sprite_get_xoffset(sprite1)/sprite_get_width(sprite1)), point_distance(x1,y1,x2,y2)/sprite_get_width(sprite1),1,point_direction(x1,y1,x2,y2),c_white,1); powinni mi za to zapłacić w złocie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Marca 2016 Autor Udostępnij Opublikowano 10 Marca 2016 GML//draw_sprite_line //argumenty: //sprite index, image index //x1,y1 - pozycja poczatku linii //x2,y2 - pozycja konca linii //wazne, aby sprite byl symetryczny, a origin sprite'a byl na jego srodku (ale tylko w osi Y, w osi X moze byc gdzie chce) var x1,y1,x2,y2; x1=argument2; x2=argument4; y1=argument3; y2=argument5; //tu byl kod //i go nie ma draw_sprite_ext(argument0,argument1, x1+(x2-x1)*(sprite_get_xoffset(sprite1)/sprite_get_width(sprite1)), y1+(y2-y1)*(sprite_get_xoffset(sprite1)/sprite_get_width(sprite1)), point_distance(x1,y1,x2,y2)/sprite_get_width(sprite1),1,point_direction(x1,y1,x2,y2),c_white,1); powinni mi za to zapłacić w złocie Garniec złota plus dobra flaszka;) jesteś niemożliwy Amaterasu ;] Orgin już linki stalowej ustawiłem odpowiednio w pozycji Y no dobra...w draw daje tak: GML draw_sprite_ext(argument0,argument1, x1+(x2-x1)*(sprite_get_xoffset(spr_linka)/sprite_get_width(spr_linka)), y1+(y2-y1)*(sprite_get_xoffset(spr_linka)/sprite_get_width(spr_linka)), point_distance(x1,y1,x2,y2)/sprite_get_width(spr_linka),1,point_direction(x1,y1,x2,y2),c_white,1); w stepie GML var x1,y1,x2,y2; x1=argument2; x2=argument4; y1=argument3; y2=argument5; w create rozumiem,że bez zmian zostaje... bo jest var więc nie muszę zmiennych żadnych definiować.. ale błąd mi wywala.. jak to poskładać teraz... create GML tmp_t=0; gamma=60; //Kat wychylenia wahadla ostrza nim=0; aspd=1; x2=x; y2=y; dis=100; step GML x=x2+dis*cos(degtorad(anim)); y=y2+dis*sin(degtorad(anim)); tmp_t+=8; //szybkosc wahadla anim=gamma*dsin(tmp_t)-280; draw GML ///Wyswietlany lancuch i ostrze for(a=0;a<7;a+=1) { draw_sprite(spr_lancuch_od_ostrza,0,x2+lengthdir_x(a*15,-anim),y2+lengthdir_y(a*15,-anim)); } draw_sprite_ext(sprite_index,image_index,round(x),round(y),image_xscale,image_yscale,image_angle,image_blend,image_alpha); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 10 Marca 2016 Udostępnij Opublikowano 10 Marca 2016 uhhh Jeżeli w kodzie (np. tym podanym przeze mnie) masz coś w stylu argumentX (gdzie X to liczba od 0 do 15), to ten kod jest skryptem i wkładasz go do zakładki "Scripts". Nazwij ten skrypt tak, jak w pierwszej linijce komentarza. Po prostu w Draw walnij GML draw_sprite_line(spr,subimg,x1,y1,x2,y2) gdzie zamiast tych podanych nazw wstawiasz to, co chcesz, zgodnie z regułami , które zapisałem w komentarzu. Traktuj podany przeze mnie kod jak zwykłą funkcję, tak jak draw_sprite_ext(), tylko z nieco innymi argumentami i z nieco innym działaniem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 10 Marca 2016 Autor Udostępnij Opublikowano 10 Marca 2016 uhhh Jeżeli w kodzie (np. tym podanym przeze mnie) masz coś w stylu argumentX (gdzie X to liczba od 0 do 15), to ten kod jest skryptem i wkładasz go do zakładki "Scripts". Nazwij ten skrypt tak, jak w pierwszej linijce komentarza. Po prostu w Draw walnij GML draw_sprite_line(spr,subimg,x1,y1,x2,y2) gdzie zamiast tych podanych nazw wstawiasz to, co chcesz, zgodnie z regułami , które zapisałem w komentarzu. Traktuj podany przeze mnie kod jak zwykłą funkcję, tak jak draw_sprite_ext(), tylko z nieco innymi argumentami i z nieco innym działaniem. Ok rozumiem;-) A reszte jal bylo w kodzie w create,step zostawiam bez zmian tylko skrypt to od Ciebie wrzucam ok dzięki;-) 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ę