Skocz do zawartości

Unknown variable


Rekomendowane odpowiedzi

No więc:

1. W object0 mam w stepie:

GML
if distance_to_object(object1) <=15

{

if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a)

a=collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0);

zmienna=1

}

 

if zmienna=0

{

image_index=sprite0

direction=0

speed=2

}

if zmienna=1

sprite_index=sprite1

a.hp-=5

a=false

speed=0

 

2. W object1 step:

GML
if hp <=0

{

instance_destroy();

}

Create:

GML
hp=50

a=false

zmienna=0

I jak się kolizjuje obj1 z 2 to wyskakuje własnie taki błąd jak podałem na początku.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if (zmienna==1)

{

sprite_index=sprite1;

a.hp-=5;

a=false;

speed=0;

}

Może o to chodzi.

EDIT:

Zauważ że masz if(distance_to_object(object1) <=15), a dalej sprawdzasz warunek if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a). W pierwszym sprawdzasz czy object1 jest w odległości mniejszej bądź równej 15 px, w drugim od 10 px. Jeżeli pierwszy jest prawdą, to wcale nie znaczy, że drugi if także. Dla przykładu załóżmy, że object1 jest w odległości 13px. Warunek pierwszy jest spełniony natomiast drugi nie. Object1 jest za daleko o 3 px, co powoduje, że zmienna a nadal jest false i GM nie odwołuje się do żadnego objectu. Natomiast zmienna=1 i dalsza część kodu jest wykonywana. Przepuszczam, że chciałeś zrobić coś takiego, że gdy object0 jest w odległości 15 px od object1, to go atakuje. Zmienia mu się sprite i odejmuje się object1 5 hp:

GML
if(distance_to_object(object1)<=15)

{

if(sprite_index!=sprite1)

{

a=collision_circle(x,y,15,object( 1 albo 0 nie pamietam ),1,0);

a.hp-=5;

speed=0;

sprite_index=sprite1;

}

}

else

{

image_index=sprite0;

direction=0;

speed=2;

}

Jeszcze musisz dodać kod na zamianę sprita po ataku.

Odnośnik do komentarza
Udostępnij na innych stronach

if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)&&!a)

Collision_circle zwraca id obiektu, z którym kolidujesz, a nie true-false. Dlatego podejrzewam, że ten warunek nigdy się nie spełnia, a co za tym idzie, zmienna "a" nie jest znana i nie przetrzymuje ona id obiektu... I dlatego unknown variable ;) .

Może tak:

GML
if(collision_circle(x,y,10,object( 1 albo 0 nie pamietam ),1,0)>0&&!a)
Odnośnik do komentarza
Udostępnij na innych stronach

wez sobie drawem albo show_messagami sprawdzaj jakie warunki sa spełnione i bedziesz wiedział gdzie jest źle a gdzie dobrze.

Collision_circle zwraca id obiektu, z którym kolidujesz, a nie true-false.

 

 

oj oj oj, zwraca 1 jeśli jest kolizja a wartość 1 to true, w przeciwnym wypadku zwraca 0 lub -1 co jest wartością false.

Odnośnik do komentarza
Udostępnij na innych stronach

Totalnie nie wiem o co chodzi w tym przykładzie.. co chcesz uzyskać?

a.hp-=5 jest bez sensu ponieważ zmienna a jest typu boolean a nie objectem.. zrób ewentualnie other.hp-=5. Lub po prostu hp-=5, komu ma odejmować to hp?

 

edit- pomyliłem sie, jednak do zmiennej a jest przypisany obiekt, nie zauważyłem:)

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