Skocz do zawartości

Zablokowane Zliczenie obieków


/l/l-ichał

Rekomendowane odpowiedzi

Witam, zakładałem już kiedyś temat odnośnie tego problemu ale teraz jest to zupełnie inny kod.

Chodzi o to, że obiekt A ma swoją bazę danych, a w najbliższym terenie jest 10 obiektów B.

 

Próbowałem naprawdę wielu rozwiązań ale jak widać nie wystarczająco wiele. Mam pewien zarys jednak nie umiem go składnie przekształcił na kod, mam nadzieję, że ktoś mi pomorze.

Więc, "A" ma za zadanie policzyć i nazwać jako jedna zmienna obiekty "B" (np. dobre), które spełniają dany warunek. Następnie wybrać najbliższy z tych "dobrych". (to akurat umiem)

 

Mniej więcej wygląda to tak (w mojej głowie):

A step

dobre = obiekty B, które !collision_line...ściana..

wybrany = nearest...dobre

 

Od razu dodam, że poprzedni kod, który dostałem został wykorzystany gdzie indziej, bo mając 10 A i 10B, wykonywał 400 skomplikowanych pętli na raz co trochę przeciążało.

 

Po co mi to? Sygnaturka, projekt ciągnę już ponad pół roku więc nie jestem jednym z tych co zaczynają i nie kończą.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
nearest = 0; //Tu będziemy przechowywać id najbliższego B

dis=999999; //Dystans do najbliższego

with(B) //Sprawdzamy po kolei wszystkie B

{

a=point_distance(other.x,other.y,x,y); //sprawdzamy odległość danego B do A

if(a<other.dis && dobry=true) //jeśli odległość jest mniejsza i obiekt B jest dobry

{

other.dis=a; //aktualizujemy odległość

other.nearest=id; //i id najbliższego

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Jest naprawdę ciekawe, jednak mi wystarczy komenda nearest...dobry, przede wszystkim chodzi mi o to jak ustalić, który jest dobry, tak czy inaczej dzięki.

 

Edit:

chociaż... myślisz że jak zmienię dobry=true na !collision line to będzie sprawdzać po kolei aż znajdzie najbliższy, spełniający warunek?

Odnośnik do komentarza
Udostępnij na innych stronach

ahh, sorry, dopiero teraz dokładnie przeanalizowałem skrypt

 

Po pierwszych testach wszystko wygląda dobrze ale posprawdzam jeszcze chwilę i dam znać.

 

Edit:

To jest po prostu zbyt piękne! Sprawdzałem w każdy sposób, dałem ten sam skrypt do obiektu B względem A, postawiłem po 20 A i B, tor przeszkód, a gra nawet nie zwolniła. Jestem twoim dłużnikiem. :thumbsup:

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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