Skocz do zawartości

Zablokowane instance_nearest


Shaman

Rekomendowane odpowiedzi

No więc, chodzi o funkcję instance_nearest. Mam problem, nad którym głowię się już drugi dzień i nie mogę go rozwiązać.

 

Sprawę ciężko opisać samymi słowami, więc zamieszczam przykład: KLIK.

 

Są czerwone i zielone kulki które są w ciągłym ruchu. Wszystkie kulki to jest ten sam obiekt, a kolor losuje się w create event. Całe zagadnienie polega na tym, żeby po kliknięciu na jedną z kulek, pojawiała się linia łącząca klikniętą kulkę z NAJBLIŻSZĄ kulką TEGO SAMEGO KOLORU.

 

Wszystko byłoby proste, gdyby nie to, że kulki to jeden obiekt.

 

1.

Początkowo nie wiedziałem nawet jak kazać kulce wyszukać inną, najbliższą kulkę (pomijając kolory). Kiedy używałem funkcji instance_nearest, to kulka wyszukiwała samą siebie. Działo się tak, bo od punktu będącego originem kulki najbliższą kulką była ona sama. Niedawno wymyśliłem żeby deaktywować obiekt szukający na moment przed wyszukiwaniem i aktywować go znowu po wyszukaniu, żeby nie wyszukiwał sam siebie. Okazało się, że sposób zadziałał w przykładzie, jednak jak użyłem go w grze, to pojawiły się różne bugi, które najwyraźniej wywołuje ta chwilowa deaktywacja. Jak ktoś ma inny pomysł, to chętnie wysłucham ;)

 

2.

Trudniejsza sprawa, czyli wyszukiwanie najbliższego instance'a o podanych parametrach, w przykładzie chodzi o kolor kulki, a w grze tych parametrów może być więcej. Wszelkie pomysły mile widziane.

 

 

Czekam na odpowiedzi, miejsce w creditsach zapewnione :thumbsup:

Odnośnik do komentarza
Udostępnij na innych stronach

Wrrr... tyle razy dawałem na to skrypt xD

 

// funkcje nazywasz np nearest_color_obj

var __dist,_obj;
__dist=1000;

with(argument0)
{
if (id<>argument2.id)
if (color==argument1)
if (distance_to_object(argument2)<__dist)
{
    __dist=distance_to_object(argument2);
    _obj=self.id; 
}

}

return _obj;

 

Masz sobie funkcje

nearest_color_obj(obj,color,to_obj);

pierwszy argument to rodzaj obiektu jakiego szukasz, 2 argument to jaki ma mieć kolor, a 3 argument, to do którego ten najbliższy dystans ma szukać, najlepiej jak podasz id :P

 

czyli np w kulce dajesz kod

nearest_color_obj(objKulka,c_green,self.id);

 

.. i więcej nie pytać! RAWR!

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde, nie do końca kumam ten kod, jak go wstawiłem do przykładu to pokazało error przy return _obj, że unknown variable _obj. Byłbyś tak miły i wstawiłbyś swój skrypt do przykładu i zamieścił, bo ja najwidoczniej robię robię to źle. Albo chociaż zerknął na przykład i wyjaśnił co gdzie wstawić i jak? Byłbym wdzięczny.

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