Skocz do zawartości

Najbliższy objekt


Rekomendowane odpowiedzi

Pytania typu "znajdź najbliższy objekt były już zadawane, ale mnie chodzi o to, żeby znaleźć najbliższy objekt znajdujący się na danym obszarze. Obszar ten ma być prostokątny tak, jak Collision_rectlange. Potrzebuję zrobić AI do gry, więc sami wiecie...

Z góry dziękuje za pomoc. :bye1:

Odnośnik do komentarza
Udostępnij na innych stronach

i = instance_nearest( x, y, obj );

xx1 = x punkt 1;
yy1 = y punkt 1;
xx2 = x punkt 2;
yy2 = y punkt 2;

if( !( i.x > min( xx1, xx2 ) && i.x < max( xx1, xx2 ) && i.y > min( yy1, yy2 ) && i.y < max( yy1, yy2 ) ) )
     i = noone;

W i masz id tego obiektu.

Odnośnik do komentarza
Udostępnij na innych stronach

Ha! To sie nie sprawdzi! Przedstawie to za pomoca rysunku...

beztytuuur7.png

Obiekt A to obiekt, ktory poszukuje najblizszego obiektu B na wyznaczonym obszarze, zaznaczonym na rysunku kolorem rozowym. Po wykonaniu kodu Tymona obiekt A nie znajdzie obiektu B ktory jest wewnatrz obszaru, bo blizej jest inny obiekt B, poza obszarem.

Nie chce mi sie pisac rozwiazania ale trzeba 'przeleciec' po wszystkich obiektach, sprawdzic czy sa na obszarze i znalesc najblizszy.

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko podmień warunek sprawdzający czy znajduje się w tym obszarze na taki jak ja mam:

if( x > min( xx1, xx2 ) && x < max( xx1, xx2 ) && y > min( yy1, yy2 ) && y < max( yy1, yy2 ) )

:P

 

Scorpion, a skopiowałeś scripta? :)

Odnośnik do komentarza
Udostępnij na innych stronach

pewnie pisze ze takiej nie ma bo zajrzyj w moim przykładzie do scripts... te funkcje sam napisałem.

Tymon a co to za różnica niby? Tylko więcej pisania xD

 

EDIT:

Tymon a można to wrzucic na strone? Przykład moze nie jest jakiś super ale to mój pierwszy przykład i nie chciałbym by ktoś mi go skopiował i podał za swoje, a jakby był na stronie to by mnie te nowe alibi chroniło xD

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Tymon, bez przesady. ;) Kombinujecie tam gdzie nie trzeba. Check this out:

 

      instance_deactivate_all( true );
      instance_activate_region( left, top, width, height, true );
cel = instance_nearest( x,y, szukany );
      instance_activate_all();

Odnośnik do komentarza
Udostępnij na innych stronach

ta ale on chce by te obiekty w rejonie pozostawaly bo co... bedą np ludziki co mają szukac graczy tylko jesli ktorys z nich jest w widoku i co? gracza chcesz dezaktywowac ;>

 

Ranmus tym razem to ty uprzedziłeś mnie do siebie xD jak mozna tak nie zrozumiec tego co napisał Scorpion xD

 

(chyba że to żart xD)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Nie no Pablo, to właśnie Ty nie rozumiesz i jednocześnie wmawiasz mi, że się pomyliłem. :] Przeczytaj jeszcze raz skrypt, który zapodałem i przeanalizuj dokładnie jego działanie. Zaskoczyłeś mnie chłopie. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

no przeciez wiem co robi twoj skrypt xD dezaktywuje wszystkie obiekty, potem aktywuje tylko te w rejonie szukania, wybiera se cel... kurde xD a potem aktywuje obiekty spowrotem xD. Jednak nie dobrze jest patrzec na skrypty puźną godziną xD. No ale czy obiekty po dezaktywacji nie wykonują swojego kodu z create raz jeszcze?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Pewnie nie, bo to by było głupie, niemądre i przy dezaktywacji musiał by być wywoływany event destroy. A wtedy te funkcje straciły by sens, gdyż równie dobrze można by było niszczyć obiekty i je na nowo tworzyć. :]

 

Jedyną wadą powyższego rozwiązania jest to, że nie można dezaktywować obiektów w innych częściach gry.

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ę...