peterz_pl Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 Witajcie :) :thumbsup: Od niedawna głowię się nad tym jak zrobić podążanie obiektu po drodze myszki. Probowalem na patchach ale nie dalo rady. Zamieszczam GIF zebyście zrozumieli dokladnie o co chodzi a raczej o co biega :D xD :sp_ike:
Ali Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 jakim programem zrobiłeś tego gifa?? Post nic nie wnosi do tematu. Z takimi pytaniami piszę sie na PW. Warn Borek
Nobody Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 Może zrób alarm, który będzie do kolejki dodawał pozycję myszki, a w objekcie zrób poruszanie się do tych punktów. Zaraz napiszę kod...
pablo1517 Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 lol, aleś mu odpowiedział. Ja kiedyś też się nad tym głowiłem, próbowałem dynamicznie tworzyć patch dodając punkty z położenia myszki ale d**a z tego. Myślę, że z własnym zapisywaniem pozycji myszki do tablicy powinno być ok :P
peterz_pl Opublikowano 18 Września 2008 Autor Opublikowano 18 Września 2008 jakim programem zrobiłeś tego gifa?? Prosze... http://www.speedyshare.com/947285279.html Musisz przeciągnąc gify do okienka..
Nobody Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 KONTROLER: GML (Create) // Tworzymy kolejkę global.queue = ds_queue_create(); GML (Step) temp = ds_queue_tail( global.queue ); // Pobieramy najnowszą pozycję z kolejki, żeby sprawdzić, czy mysz nie stoi w miejscu ( bo po co zaśmiecać kolejkę? :) ) px = string_copy( temp, 0, string_pos( ":", temp ) - 1 ); // Pobieranie X py = string_copy( temp, string_pos( ":", temp ) + 1, string_length( temp ) - string_pos( ":", temp ) - 1 ); // Pobieranie Y if( point_distance( real(px), real(py), mouse_x, mouse_y ) > 3 ) ds_queue_enqueue( global.queue, string(mouse_x) + ":" + string(mouse_y) + ":" ); // Jeżeli pozycja myszki zmieniła się przynajmniej o 3px, dodajemy ją do kolejki OBJEKT: GML (Step) if( variable_global_exists( "queue" ) ) // Jeżeli kolejka istnieje { var temp; if( !variable_local_exists( "px" ) ) // Jeżeli objekt został dopiero co stworzony podajemy mu pierwszą daną { temp = ds_queue_head( global.queue ); ds_queue_dequeue( global.queue ); px = string_copy( temp, 0, string_pos( ":", temp ) - 1 ); py = string_copy( temp, string_pos( ":", temp ) + 1, string_length( temp ) - string_pos( ":", temp ) - 1 ); } if( point_distance( x, y, real(px), real(py) ) > 3 ) move_towards_point( real(px), real(py), 1 ); // Jeżeli jesteśmy za daleko od punktu docelowego, poruszamy się do niego else { // W przeciwnym przypadku ( jesteśmy tuż obok punktu ) podajemy mu następną daną z kolejki temp = ds_queue_head( global.queue ); ds_queue_dequeue( global.queue ); px = string_copy( temp, 0, string_pos( ":", temp ) - 1 ); py = string_copy( temp, string_pos( ":", temp ) + 1, string_length( temp ) - string_pos( ":", temp ) - 1 ); } } Kontroler musi być w roomie, i room_speed musi być dość duży, ponieważ przy szybkim poruszaniu się myszy nie każda pozycja się zapisuje. EDIT: @2xUP: No napisałem cały kod, co chcesz :P EDIT2: No i jeszcze dodałem komentarze do połapania się ;)
peterz_pl Opublikowano 18 Września 2008 Autor Opublikowano 18 Września 2008 Dzieki... działa nieźle.. ale troszke odstrasza mnie ten room_speed. To będzie Bijatyka.. więc znaczne zwiększenie szybkości jest nie wskazane. Ale zapisze sobie ten kod, mam juz pomysł gdzie go wykorzystać :) dzięki jeszcze raz. Do zamknięcia :) heh
Nobody Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 W dolnym lewym rogu strony masz opcje moderatora. Zawsze możesz zamknąć swój temat.
Marek.S Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 https://gmclan.org/up1558_11_draw_moving_gm6.html top działa całkiem sprawnie ;)
Nobody Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 Czy tworzenie tylu objektów nie jest zbyt niewydajne?
Marek.S Opublikowano 18 Września 2008 Opublikowano 18 Września 2008 e tam, chodzi sprawnie. Ja w swoim ostatnim programie po stworzeniu 2k obiektów miałem 58 fps
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ę