szmalu Opublikowano 18 Marca 2012 Udostępnij Opublikowano 18 Marca 2012 Witajcie, do tej pory sam radziłem sobie z robieniem prostych gier. Tym razem postanowiłem jednak sam zadać pytanie, bo nie znalazłem podobnego problemu na forum. Dobra, do rzeczy :D Chodzi o to, że użyłem warunku GML if distance_to_object(takitam)<120 , z tym że chciałbym żeby odnosiło się tylko do obiektu takitam (jest ich kilka), który ma wartość zazn=1. Jak to zrobić? Proszę o pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 18 Marca 2012 Udostępnij Opublikowano 18 Marca 2012 GML for(i=0;i<instance_number(takitam);i+=1) { in=instance_find(jakitam,i) if(if distance_to_object(in)<120 and zazn=1) { show_message(string(in)+" spełnia warunek"); exit; //Jeśli wstawisz 'exit' to program znajdzie pierwszy obiekt. Bez exit ostatni. } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 18 Marca 2012 Autor Udostępnij Opublikowano 18 Marca 2012 Dalej nie działa. To ja może wyjaśnię konkretniej gdzie leży problem. Otóż na mapce można tworzyć jednostki, na przykład tutaj utworzyłem dwie: obrazek1 każda może się przesuwać jednorazowo o 3 kratki. Działa to tak, że klikam na jednostkę, potem klikam na puste pole w obrębie 3 okolicznych kratek i przesuwa się. Wszystko działa. Niestety, gdy klikam jednostkę po prawej, a następnie puste pole obok jednostki po lewej, to też się przesuwa w tamto miejsce. obrazek2 Musi być tak, że po wybraniu jednostki, przesuwanie się jej możliwe jest tylko w okolicy tego wybranego obiektu. Nie jest to chyba złożony problem, ale jestem zbytnim noobem żeby go rozwiązać :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 18 Marca 2012 Udostępnij Opublikowano 18 Marca 2012 mozesz ewentualnie zrobic zmienna globalna global.zaznaczony i przy zaznaczeniu zapisywac ID zaznaczonego obiektu i sprawdzac odleglosc if distance_to_object(global.zaznaczony)<200 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 18 Marca 2012 Udostępnij Opublikowano 18 Marca 2012 GML with(takitam) // taka ciekawa petla GM ktora wykonuje operacje z { } dla kazdego istniejacego typu obiektu podanego w nawiasach, tak jakby wewnątrz tego obiektu * { if (zazn!=1) continue; // jesli nie jest zaznaczony, zostanie pominiety. if (distance_to_object(other)<120) // * other - odwoluje sie do obiektu, który wywołał pętlę "with" { show_message(string(in)+" spełnia warunek"); exit; //Jeśli wstawisz 'exit' to program znajdzie pierwszy obiekt i zatrzyma ten skrypt // bez "exit" program wyswietli komunikat dla kazdego obiektu takitam ktory spelnia warunek. } } } Ogólnie jak napiszesz GML with(takitam) { /* to tutaj masz widoczność taką samą jak w każdym obiekcie "takitam", tzn. możesz odwoływać się do zmiennych tego obiektu bez potrzeby adresowania np. takitam.zmienna */ } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szmalu Opublikowano 18 Marca 2012 Autor Udostępnij Opublikowano 18 Marca 2012 Jakoś się z tym uporałem :] Co prawda jak zwykle musiałem utworzyć nowy obiekt, w który zamienia się klocek po kliknięciu, ale to chyba wielkiej szkody grze nie wyrządzi. Tak, wiem, pewnie dało się to zrobić 10 razy prościej, ściągając id klikniętego klocka.... W tym momencie przerwałem pisanie posta, bo pomyślałem "faktycznie! przecież to świetne rozwiązanie! dlaczego dopiero teraz na to wpadłem" i poprawiłem grę. Potem patrzę - "ojej! przecież karolo320 napisał wcześniej dokładnie to samo, a ja nie zauważyłem" xD ALE INCEPCJA SIĘ ZROBIŁA W każdym razie, dziękuję bardzo za pomoc, myślałem że już nikt nie pracuje w GM :) EDIT: Dzięki pablo, twoje rozwiązanie jest chyba trochę lepsze, ale już nie chcę grzebać w kodzie po raz setny i poprawiać :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 18 Marca 2012 Udostępnij Opublikowano 18 Marca 2012 Widzę, że masz założenie, że tylko 1 obiekt jest aktualnie zaznaczony na raz. Gdybyś w przyszłości zrobił opcję zaznaczania kilku obiektów naraz wtedy moje rozwiązanie masz jak ulał :) 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ę