Draconis Opublikowano 12 Lipca 2010 Udostępnij Opublikowano 12 Lipca 2010 Witam Szukam sposobu do uzyskania ruchu po okręgu, tak by można było podać obiekt, wokół którego ma się przemieszczać oraz prędkość z jaką ma się poruszać. Oraz opcjonalnie zrobienie tego w taki sposób by jeżeli byłoby więcej obiektów krążących utrzymywałyby między sobą najwyższy możliwy kąt (były równomiernie rozłożone) i gdyby jakiś został dodany/zabrany byłyby dopasowane. Dotychczas wymyśliłem tylko metodę polegającą na tworzeniu sprite'ów, w których była cała animacja poruszającego się obiektu, lecz jeśli chcę zwiększyć promień lub dodać ich więcej to muszę tworzyć nowe animacje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 12 Lipca 2010 Udostępnij Opublikowano 12 Lipca 2010 GML r = 50; //promien spd = 5; // prędkość xx = obiekt.x //czyli pozycja w okół krótej krązy yy = obiekt.y x = xx + lengthdir_x( r, direction ); y = yy + lengthdir_y( r, direction ); direction += spd; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 12 Lipca 2010 Autor Udostępnij Opublikowano 12 Lipca 2010 Dzięki, działa. Teraz próbuję uzyskać drugą część efektu. Pomyślałem, że jeżelibym poprzestał na dwóch to wystarczyłoby jakbym zmienił ( w kolejnym obiekcie) GML direction += spd; /*na*/ direction += spd+180; to uzyskuję odpowiedni efekt, jednak drugi obiekt cały czas miga no i wymaga to tworzenia większej ilości obiektów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 12 Lipca 2010 Udostępnij Opublikowano 12 Lipca 2010 miga czyli? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 12 Lipca 2010 Autor Udostępnij Opublikowano 12 Lipca 2010 miga czyli? Pojawia się i znika ze zmienną częstotliwością. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 12 Lipca 2010 Udostępnij Opublikowano 12 Lipca 2010 może masz w sprite pusty image? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 12 Lipca 2010 Autor Udostępnij Opublikowano 12 Lipca 2010 może masz w sprite pusty image? Sprite jest ten sam, zmieniony został jedynie kod, a wersja z pierwszym kodem nie miga. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 12 Lipca 2010 Udostępnij Opublikowano 12 Lipca 2010 GML w drugim obiekcie daj w create: direction = 180 a w stepie pozostała część kodu ze standardowym direction += spd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 13 Lipca 2010 Autor Udostępnij Opublikowano 13 Lipca 2010 Dzięki, sprawdza się, chyba by uzyskać efekt, który chciałem będę musiał stworzyć tyle obiektów ile dopuszczam maksymalnie i wymyślić jakiś skrypt, który będzie sprawdzał ile ich jest i obliczał ponownie dla wszystkich kąt. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Lipca 2010 Udostępnij Opublikowano 13 Lipca 2010 a pęta to co? GML r = 50; spd = 5; count = 5; // ilość krążących obiektów xx = obiekt.x yy = obiekt.y for ( i = 0; i < count; i += 1 ) { x_ = xx + lengthdir_x( r, direction + (360 / count) * i ); y_ = yy + lengthdir_y( r, direction + (360 / count) * i ); draw_sprite( sprite_obiektu, -1, x_, y_ ); } direction += spd; wsadz to w draw jakiegoś niezależnego obiektu i powiedz czy uzyskałeś zamierzony efekt :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 13 Lipca 2010 Autor Udostępnij Opublikowano 13 Lipca 2010 Dzięki, z wyglądu działa idealnie, tylko nie jestem pewien, czy da się wykryć kolizję ze sprite'em. Może powinienem zacząć od tego, że ma to działać podobnie do tarcz obracającej się wokół gracza/budynków/przeciwników. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Lipca 2010 Udostępnij Opublikowano 13 Lipca 2010 hm.. na pierwszej pętli stwórz te obiekty i przypisz je do tablicy, na następnej już tylko je obracaj sposobem jaki wyżej zaprezentowałem :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Draconis Opublikowano 13 Lipca 2010 Autor Udostępnij Opublikowano 13 Lipca 2010 hm.. na pierwszej pętli stwórz te obiekty i przypisz je do tablicy, na następnej już tylko je obracaj sposobem jaki wyżej zaprezentowałem :) Mam nadzieję, że uda mi się to zrobić i nie będę potrzebował w tej sprawie więcej pomocy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 13 Lipca 2010 Udostępnij Opublikowano 13 Lipca 2010 Najprościej, to jest stworzyć sprita z 10 klatkami (5 z obrazkiem, 5 pustych). Potem stworzyć obiektA i obiektB. Przyjmujemy, że poruszamy obiektemA. ObiektB porusza się po okręgu względem obiektA. GML (Create obiektA) b = instance_create(x+8,y+8,obiektB); b.obj = id; Poniżej poruszanie się po okręgu. ObiektB musi mieć ustawiony ten migający sprite. GML (Step obiektB) var angle, obj; angle = 0; obj = obiektA; angle+=10; if angle>=360 angle-=360; // jesli oHero bedzie zniszczony, oAura tez bedzie if !instance_exists(obj) { instance_destroy(); exit; } x=obj.x+lengthdir_x(16,angle); y=obj.y+lengthdir_y(16,angle); 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ę