Skocz do zawartości

podążanie obiektu drogą myszki


peterz_pl

Rekomendowane odpowiedzi

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ę ;)

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...