Raqe Opublikowano 19 Czerwca 2012 Udostępnij Opublikowano 19 Czerwca 2012 Witam! Kolejny raz ja, kolejny problem ;p Tym razem chodzi o jedną grupę obiektów (będących itemkami) skupionych w jednym parencie. Posiadają one ważną zmienną określającą ich egzystencję w całej grze, bowiem albo leżą na ziemi, albo są w inwentarzu (t=false v t=true). Chcę znaleźć najbliższy itemek który jednocześnie posiada wartość true. Jest to ważne, ponieważ istnieje szansa że najbliższy jaki zostanie znaleziony będzie miał t=false, a koniecznie potrzebuję t=true. Jak czegoś takiego dokonać? Pętla? Zawiłe procedury? Proste rozwiązania? Oczekuję na odpowiedź. Pozdrawiam! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 19 Czerwca 2012 Udostępnij Opublikowano 19 Czerwca 2012 GML var _id,odl, odl2; _id=-1 odl=-1 odl2=-1 with(obj_item){ if(t==true){ other.odl2=point_distance(x,y,other.x,other.y) if(other.odl==-1){ other._id=id other.odl=other.odl2 }else{ if(point_distance(x,y,other.x,other.y)<other.odl){ other._id=id other.odl=other.odl2 } } } } mam glupia klawiature moglem machnac literowki :) nudzi mi się, więc rozpisze. 1. tworzysz 3 zmienne, ktore potem ci sie przydadza _id to id najblizszej instancji ze zmienna odl to odleglosc do tegóż obiektu odl2 to juz calkiem pomocnicza zeby 2 razy nie sprawdzac point_distance 2. przelatujesz wszystkie instancje itemow i albo sprawdzasz, czy jeszcze nie sprawdzales(if(odl==-1)) albo czy odleglosc od przelatywanego jest mniejsza od najblizszego aktualnego i jesli to sie zgadza to nadpisujesz najblizszy 3. _id to id najblizszego ze zmienna! :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Raqe Opublikowano 19 Czerwca 2012 Autor Udostępnij Opublikowano 19 Czerwca 2012 Wszyściutko działa, tylko mam problem bo nie zawsze ten item istnieje, a widzę że instance_exists nie pomaga zbytnio... chyba że czegoś nie ogarnąłem... Mam tak: Po Twoim kodzie: if instance_exists(_id) then { mozna=true; } else mozna=false; To coś jak amunicja, w końcu się wyczerpie. Chodzi o to że klikam "guziczek" i jeden itemek z inwentarza (o skromnej budowie) mi wypada i zmienia się w inny. W końcu nie będzie miało co się zmienic ;p a tu wciąż wypada :D EDIT: Nawet trochę inaczej, gdy nie ma żadnego itemu na mapie to i owszem wszystko gra, ale jak chociaż jeden leży na ziemi, to mam nieskończone źródło itemków, bo z inwentarza się usuwa, a z ziemi nie ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 19 Czerwca 2012 Udostępnij Opublikowano 19 Czerwca 2012 _id wwal do create GML _id=-1 var _odl, odl2; odl=-1 odl2=-1 if(instance_exists(obj_item)){ with(obj_item){ if(t==true){ other.odl2=point_distance(x,y,other.x,other.y) if(other.odl==-1){ other._id=id other.odl=other.odl2 }else{ if(point_distance(x,y,other.x,other.y)<other.odl){ other._id=id other.odl=other.odl2 } } } } }else{ _id=-1 } if(id>-1){zrob cos} 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ę