Skocz do zawartości

obiekt ''prawie'' najbilższy


mipo57

Rekomendowane odpowiedzi

jest kilka obj1 każdy z nich tworzy obj2 na swojej pozycji i jak zrobić żeby akcja miała miejsce przy zderzeniu obj1 z najbliższym obj2 nie licząc swojego obj2

i jeszcze jeden problem:

jak zrobić żeby obj1 znalazł obj1 najbliższego siebie nie licząc siebie

Odnośnik do komentarza
Udostępnij na innych stronach

1. Gdy obj1 tworzy obj2 to niech zapisuje id tego swojego obj2 w jakiejś zmiennej. W ten sposób:

GML
moj_obj2=instance_create(x,y,obj2);

Teraz w kolizji obj1 z obj2 dajesz po prostu warunek:

GML
if(other!=moj_obj2)

Żeby kod się nie wykonał przy kolizji z tym własnym.

Tylko nie zapomnij najpierw w Create stworzyć zmienną moj_obj2

 

2. Możesz w pętli przejrzeć wszystkie obiekty obj1 i znaleźć ten najbliżej, ale pominąć samego siebie:

GML
nearset=0; //do tej zmiennej zapiszemy id najbliższego obj1

dist=100000; //odległość od najbliższego obj1

with(obj1) //przeglądamy wszystkie obj1

{

dis=point_distance(other.x,other.y,x,y); //obliczamy odległość

if(id!=other && dis<other.dist) //jeśli to nie jest on sam i jest bliżej niż aktualny najbliższy

{

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

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

}

}

Po tym kodzie w zmiennej nearest jest id najbliższego obj1

 

Z tego co pamiętam to w with można używać other. A jeśli nie to stwórz sobie zmienne globalne.

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