Skocz do zawartości

Najbliższa instancja obiektu która nie jest mną


Dester

Rekomendowane odpowiedzi

Mam sobie obiekt car. Ten obiekt w każdym step ustawia zmienną near na najbliższą instancję obiektu car.

GML
near = instance_nearest(x, y, car)

Problem w tym że za każdym razem będzie ustawiał ją na siebie.

 

Internet podpowiada:

GML
x += 7777777

near = instance_nearest(x-7777777, y,car)

x -= 7777777

Ale przecież każda instancja obiektu car wykona ten kod w tym samym momencie! Z tego powodu nadal nie otrzymam oczekiwanego wyniku -_-

 

Ktoś wie jak to rozwiązać?

Odnośnik do komentarza
Udostępnij na innych stronach

Szybkim rozwiązaniem będzie użycie: http://www.gmlscripts.com/script/instance_nth_nearest ale... to co podałeś powinno działać. Jeżeli nie działa to masz bałagan w kodzie. Nie przeniesie to wszystkich instancji tylko ten jeden wykonujący kod.

 

I nic nigdy nie ma prawa wykonać się w tym samym momencie!

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Internet podpowiada Ci jakąś głupotę. Nie mam GameMakera w tej chwili więc pojadę z pamięci, możliwe, że nie wszystkie funkcje będą dobrze sie nazywały, ale z dokumentacją dojdziesz co miałem na mysli.

 

Dla jasności ustalmy, że twój obiekt "car" nazywa sie objCar, żeby łatwiej sie czytało.

GML
var distToNearest= 100000; // jakas ogromna wartosc, troche hack, ale na twoje potrzeby wystarczy

var nearestInst = noone; // nie pamietam jak jest jakis odpowiednik nulla w GM

with(objCar)

{

if (self.id == other.id) // pomin samego siebie

continue;

 

var dist = point_distance(x, y, other.x, other.y);

if (dist < distToNearest)

{

nearestInst = self.id;

distToNearest = dist;

}

 

}

 

Na koncu tego skryptu pod nearestInst masz id najblizszego obiektu objCar i pod distToNearest masz dystans do tego obiektu.

Troche bym się zastanowił czy faktycznie musisz wykonywać ten skrypt co step. Jesli bedziesz miał sporo tych aut to może być overkill bo każde auto będzie pętlowało po wszystkich innych (łącznie ze soba)

Z czystej ciekawości, co próbujesz osiągnąć tym wyszukiwaniem najbliższego obiektu?

 

I nic nigdy nie ma prawa wykonać się w tym samym momencie!

 

GM raczej wątków się nie doczekał, więc tak, kod wszystkich instancji wykonuje się w jakiejś kolejności, nigdy jednocześnie.

W ogóle lol, Threef, sprawdziłem Cię teraz. Byłes z nami na GameJamie w budapeszcie xD. Zajrzałeś też na Pyrkonie do nas, Insection wystawiałem z Artifexem.

Odnośnik do komentarza
Udostępnij na innych stronach

W ogóle lol, Threef, sprawdziłem Cię teraz. Byłes z nami na GameJamie w budapeszcie xD. Zajrzałeś też na Pyrkonie do nas, Insection wystawiałem z Artifexem.
Wiem, też się wystawiałem i o waszym amLABie dowiedziałem się w niedzielę. Pograłem w Another one fight the dust ale koło Ciebie była za duża kolejka ;) dziwne że się nie widzieliśmy w sobotę na imprezie.

 

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