Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   31 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat
  • 0
Dester

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

Pytanie

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ć?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

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!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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.

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×