Skocz do zawartości

Tylko obiekt z daną wartością


szmalu

Rekomendowane odpowiedzi

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

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

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

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

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

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