Ch3mical Opublikowano 25 Kwietnia 2009 Udostępnij Opublikowano 25 Kwietnia 2009 Witam po dłuższej przerwie. Jak zrobić, aby 3 najbliższe osoby podążały za danym obiektem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 25 Kwietnia 2009 Udostępnij Opublikowano 25 Kwietnia 2009 GML _id1=instance_nearest(x,y,object) instance_deactivate_object(_id1) _id2=instance_nearest(x,y,object) instance_deactivate_object(_id2) _id3=instance_nearest(x,y,object) instance_activate_object(_id1) instance_activate_object(_id2) A potem normalnie move_towards_point :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kapkap Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Ummm...a moze by tak collision_circle? ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Ummm...a moze by tak collision_circle? smile2.gif Sposób PsichiXa z nearestami jest o wiele lepszy niz bawienie sie w kolzizje i meczenie z kodem. Po to przeciez jest ta funkcja zeby zwracac id najblizszych obiektow. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Sposób PsichiXa działa, ale jak dla mnie wygodniej jest skorzystać z tego: GML // INSTANCE_NEAREST_EXT // ============== // Same like instance_nearest only you can get the #th nearest instance. // ============== // Arguments: // 0 (int) : x. // 1 (int) : y. // 2 (id) : objecttype. // 3 (int) : #th instance to find. // ============== // Returns: // instance_id or noone loc_x = argument0; loc_y = argument1; obj_type = argument2; obj_num = argument3; wds = ds_list_create(); wds2 = ds_list_create(); count = instance_number(obj_type); for (iii=0;iii<count;iii+=1) { cobj = instance_find(obj_type,iii); if (instance_exists(cobj)) { new_dist = point_distance(loc_x,loc_y,cobj.x,cobj.y); if (ds_list_empty(wds)) { ds_list_add(wds,cobj); ds_list_add(wds2,new_dist); } else { dss = ds_list_size(wds2); added=false; for (iiii=0;iiii<dss;iiii+=1) { if ( new_dist < ds_list_find_value(wds2,iiii) ) { ds_list_insert(wds2,iiii,new_dist); ds_list_insert(wds,iiii,cobj); added=true; break; } } if (!added) { ds_list_add(wds2,new_dist); ds_list_add(wds,cobj); } } } } if (ds_list_size(wds) >= obj_num) result = ds_list_find_value(wds,obj_num); else result = noone; ds_list_destroy(wds); ds_list_destroy(wds2); return result; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 ooo fajny skrypt, przyda mi się :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 Ale czy na pewno wydajniejszy? Jakoś nie wygląda mi na taki :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 2 Maja 2009 Udostępnij Opublikowano 2 Maja 2009 no w sumie mozna lepiej zrobic.. ja kiedys probowalem ale potem musialem odejsc od kompa a na nastepny dzien mi sie juz odechcialo ;] .. ja cos myslalem ze mozna np drugi obiekt najblizszy to pierwszy zniszczyc i szybko spowrotem stworzyc.. albo oddalic i spowrotem przyblizyc ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę