Adriann Opublikowano 8 Grudnia 2009 Udostępnij Opublikowano 8 Grudnia 2009 Więc mam taki problem,zrobiłem okrąg wielkości około 200\200,w tym okręgu znajduje się obiekt który podąża za kursorem,chcę by ten obiekt się odbijał od tego okręgu i nie wypadał z niego,zrobiłem w kolizji to klockiem ale tylko się zatrzymywał a chodzi mi o to żeby się ślizgał po tym okręgu,poza tym najważniejsze,kiedy okrąg się poruszy obiekt wypadał,jak zrobić by cały czas był w okręgu,proszę o pomoc. :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 8 Grudnia 2009 Administratorzy Udostępnij Opublikowano 8 Grudnia 2009 Rozumiem, że okrąg jest nieruchomy, a obiekt w środku podąża za kursorem, ale robi to tak, aby poza okrąg nie wyjść tak ? Zatem GML if point_distance(srodek_kola_x,srodek_kola_y,obj.x,obj.y)>200 { speed = 0; } else { //podazanie za kursorem } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
boom Opublikowano 8 Grudnia 2009 Udostępnij Opublikowano 8 Grudnia 2009 Ale wtedy obiekt będzie się "wkleszczał" w okrąg. Proponowałbym obiekt, o wielkości 1px i wyłączonym visible przyklejony do myszki i sprawdzanie jego kolizji z kółkiem. Następnie kod gnyska wystarczy zmodyfikować w sposób następujący: GML if (point_distance(srodek_kola_x,srodek_kola_y,obj.x,obj.y)>200 && !obj_cur.koliduje) //gdzie zmienna koliduje zmieniana jest w obiekcie niewidzialnym kod mniej więcej taki: if(collision_circle(xkolka,ykolka,100,self,1,0)) { koliduje = 1; } else { koliduje = 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 8 Grudnia 2009 Autor Udostępnij Opublikowano 8 Grudnia 2009 Gnysek o to m chodzi tylko że okrąg jest ruchomy,dużo się porusza ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 9 Grudnia 2009 Udostępnij Opublikowano 9 Grudnia 2009 Obiekt podążający: CREATE GML okrag_x=150; // wpisz tutaj pozycję koła okrag_y=150; x=okrag_x; y=okrag_y; max_speed=5; // maksymalna prędkość (jak ta wartość jest stała, usuń ją i zamień w step na liczbę)</span></span> Obiekt podążający: STEP GML direction=point_direction(x,y,mouse_x,mouse_y); if (point_distance(x,y,okrag_x,okrag_y)>=100-1 && abs(direction-point_direction(x,y,okrag_x,okrag_y))>90 && abs(direction-point_direction(x,y,okrag_x,okrag_y))<270) { speed=0; x=lengthdir_x(100,point_direction(okrag_x,okrag_y,x,y)); y=lengthdir_y(100,point_direction(okrag_x,okrag_y,x,y)); } else speed=max_speed; Teraz drobne objaśnienia :) Dlaczego 100-1? Dodałem pewien margines, żeby obiekt nie "skakał", gdy koło będzie się ruszało Do czego służy to długie zaczynające się na abs? One sprawdzają po prostu, czy jeżeli pójdzie do myszki, nie wyjdzie jeszcze bardziej po za koło. Bo zakładam, że obiekt ma się ruszyć, jeśli poprowadzisz go do środka. Co to te lenghtdir'y? Służą one do tego, żeby, gdy będziesz przesuwał koło, obiekt nie wylatywał z niego. Teraz po dotknięciu koła obiekt się zatrzyma. Jeśli chcesz, żeby obiekt "ślizgał się" po kole, dopóki w prostej linii nie znajdzie się: myszka, obiekt i środek koła, skorzystaj z tego wzoru: Obiekt podążający: CREATE GML okrag_x=150; // wpisz tutaj pozycję koła okrag_y=150; x=okrag_x; y=okrag_y; speed=5; Obiekt podążający: STEP GML direction=point_direction(x,y,mouse_x,mouse_y); if (point_distance(x,y,okrag_x,okrag_y)>=100) // miejsce, którego dotyczy informacja na dole { x=lengthdir_x(100,point_direction(okrag_x,okrag_y,x,y)); y=lengthdir_y(100,point_direction(okrag_x,okrag_y,x,y)); } Co do tej informacji: nie wiem, kiedy GM zmienia pozycję przez speed. Jeśli przed step to nie ma problemu, jeśli po, obiekt będzie wychodził po za koło. Napisz wtedy w tamtym miejscu prócz 100 jeszcze -speed. Linia będzie wtedy wyglądała tak: GML if (point_distance(x,y,okrag_x,okrag_y)>=100-speed) Nie jest to przetestowane, ale mam nadzieję, że będzie działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 9 Grudnia 2009 Autor Udostępnij Opublikowano 9 Grudnia 2009 Kurcze nie wychodzi mi to,chciałem zrobić ruch ręki taki jak tu: KLIK!! Ale mi nie wyszło :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 11 Grudnia 2009 Udostępnij Opublikowano 11 Grudnia 2009 Chodzi ci o ruch ręką po okręgu? Jeśli tak, to namaluj rękę w osobnym sprite'u (skierowaną w prawo) i ustaw origin na miejsce, gdzie jest jej punkt obrotu. W tym ludku stwórz: w CREATE: GML hand_x=x; // pozycja X, gdzie ręka się obraca hand_y=y-25;// pozycja Y, gdzie ręka się obraca hand_angle=0; // obrót ręki</span> w STEP: GML hand_x=x; hand_y=y-25; hand_angle=point_direction(hand_x,hand_y,mouse_x,mouse_y); w DRAW: GML draw_sprite_ext(s_reka,0,hand_x,hand_y,1,1,hand_angle,c_white,1); // s_reka to nazwa sprite'a z ręką</span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 11 Grudnia 2009 Autor Udostępnij Opublikowano 11 Grudnia 2009 Dzięki ale mi chodzi o dłoń a nie ramie,zrobić obrót ręki za myszką umiem:) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 11 Grudnia 2009 Udostępnij Opublikowano 11 Grudnia 2009 Aha, czyli ruchoma dłoń na ruchomej ręce? Troszkę trudniej, ale możliwe :) : Przede wszystkim sprite'y ręki i dłoni z originem w miejscu obrotu CREATE: GML // zmienne ręki arm_x=x; arm_y=y-25; arm_angle=0; arm_length=35; // chodzi tu o odległość w pikselach punktu obrotu ręki od dłoni // zmienne dłoni hand_x=x+35; hand_y=y-25; hand_angle=0; // obrót ręki</span></span> STEP: GML arm_x=x; arm_y=y-25; arm_angle=point_direction(hand_x,hand_y,mouse_x,mouse_y); hand_x=arm_x+lengthdir_x(arm_length,arm_angle); hand_y=arm_y+lengthdir_y(arm_length,arm_angle); hand_angle=...; // tutaj ustaw sobie sposób ruchu ręką</span></span> DRAW: GML draw_sprite_ext(s_reka,0,arm_x,arm_y,1,1,arm_angle,c_white,1); // s_reka to nazwa sprite'a z ręką draw_sprite_ext(s_dlon,0,hand_x,hand_y,1,1,arm_angle+hand_angle,c_white,1); // s_dlon to nazwa sprite'a z dłonią</span></span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 11 Grudnia 2009 Autor Udostępnij Opublikowano 11 Grudnia 2009 Dzięki,trochę to zmodyfikowałem i działa:) 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ę