Fervi_ Opublikowano 26 Sierpnia 2013 Udostępnij Opublikowano 26 Sierpnia 2013 Witam! 1) Sorry, jeśli nie zrozumiecie, ale zaraz wychodzę i za parę godzin będę, lekkie lamerstwo 2) Potrzebuję przykładu takiego, że objekt chodzi w kółko, a jako, że to problematyczne to kwadrat. Jednak nie za pomocą path, ale gołego kodu Obiekt powiedzmy powstaje w swoim X i Y, potem leci X+60, Y+20, X-60 i Y-20. Jak ja robiłem swój projekt, to wykonywał tylko ostatnią linijkę. Ofc. na końcu jest w miejscu stworzenia Ogólnie przepraszam, ale wychodzę, a jak wrócę zaadaptuje to do mojego projektu (Open Source rzecz jasna :P) Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 26 Sierpnia 2013 Udostępnij Opublikowano 26 Sierpnia 2013 GML if(faza=1) {if(x<target_x){x+=1}} else {faza=2} if(faza=2) {if(y<target_y){y+=1}} else {faza=3} (...) :sleep1: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 27 Sierpnia 2013 Udostępnij Opublikowano 27 Sierpnia 2013 jesli dobrze rozumiem, chcesz aby obiekt ruszal sie po krawedzi prostokota? to proponuje prosty sposob(mozna STEP, DRAW albo kdziekolwiek) GML //sc_square_move(_idx, _idy, _xoff, _yoff, _spdx) var __xst, __yst, __xoff, __yoff, __spd, __x, __y; __xst=argument0; //x start __yst=argument1; __xoff=argument2; //offset __yoff=argument3; __spd=argument4; x+=(__spd*(x<__xst+__xoff)*(y=__yst))- (__spd*(x>__xst)*(y=__yst+__yoff)); y+=(__spd*(y<__yst+__yoff)*(x=__xst+__xoff))- (__spd*(y>__yst)*(x=__xst)); kod mozna poszerzyc o rozny speed dla roznych kierokow i test na speed ktory niekonczy sie dokladnie na scianie prostokota :) GML //sc_square_moveE( _idx, _idy, _xoff, _yoff, _spdx1, _spdy1, _spdx2, _spdy2) var __xst, __yst, __xoff, __yoff, __xspd1, __yspd1, __xspd2, __yspd2, __x, __y; __xst=argument0; __yst=argument1; __xoff=argument2; __yoff=argument3; __xspd1=argument4; __yspd1=argument5; __xspd2=argument6; __yspd2=argument7; x+=(__xspd1*(x<__xst+__xoff)*(y=__yst))- (__xspd2*(x>__xst)*(y=__yst+__yoff)); y+=(__yspd1*(y<__yst+__yoff)*(x=__xst+__xoff))- (__yspd2*(y>__yst)*(x=__xst)); // for situations when multiply of _spd don´t give __x+__xoff if (x>__xst+__xoff) {x=__xst+__xoff}; if (x<__xst) {x=__xst}; if (y>__yst+__yoff) {y=__yst+__yoff}; if (y<__yst) {y=__yst}; zamiast if mozna by bylo dac jesce cos innego, ale niechcialem zabardzo komplikovac sprave :) pred wykonaniem scritpu nalezy RAZ ustavic zmienne _idx, _idy a potem ich uzywac tak: GML sc_squaremove(_idx, _idy, 500, 20, 5); //albo sc_squaremoveE(_idx, _idy, 400, 225, 5, 15, 10, 7); WAZNE: niemozna umiescic instancje wenotrz prostokota. to jest problem programisty. z zevnostr prostokota jak sie oddali od krawedzi, to script sc_square_moveE sobie poradzi :) mala modifikacja dla ruchu w oddwrotnym kierunu :) GML x+=+(__xspd1*(x<__xst+__xoff)*(y=__yst+__yoff))- (__xspd2*(x>__xst)*(y=__yst)); y+=+(__yspd1*(y<__yst+__yoff)*(x=__xst))- (__yspd2*(y>__yst)*(x=__xst+__xoff)); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 28 Sierpnia 2013 Udostępnij Opublikowano 28 Sierpnia 2013 Po kiego. Chodząc w kole można wykorzystać magię trygonometri, a kwadrat to nic innego jak zaokrąglenie kąta do 90. GML (create) dir=0; GML (step) x+=sin(degtorad(dir div 90 * 90)); y+=cos(degtorad(dir div 90 * 90)); dir=(dir+1) mod 360; Z tym kodem kwadrat ma bok długości 90 pikseli, możesz to przyspieszyć/zwolnić zmieniając o ile zwiększa się dir na końcu step lub mnożąc x+= / y+= przez jakąś wartość. EDIT: Z tym kodem obiekt zaczyna ruch idąc w dół, zmień początkowe dir (0,90,180,270) aby to zmienić.(Obiously praktycznie każda zmiana w kodzie zmieni kierunek początkowy, ale to jest najłatwiejsze) 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ę