Skocz do zawartości

Dwa bloki kodu nie działają ze sobą poprawnie.


Moho

Rekomendowane odpowiedzi

Hi,

 

Mam oto takie dwa bloki kodu:

 

GML
if atak=1

{

if dir=0

move_towards_point(objplayer.x+50,y,3)

else

move_towards_point(objplayer.x-50,y,3)

if hspeed>=0

{

dir=0;

sprite_index=sprenemy1walkright;

}

else

{

dir=1;

sprite_index=sprenemy1walkleft;

}}

else if atak=0

{

speed=0;

if dir=0

sprite_index=sprenemy1right

else

sprite_index=sprenemy1left

}

 

GML
if point_distance(x,y,objplayer.x,objplayer.y) < 150

{

if dir=0

move_towards_point(objplayer.x+50,y,3)

else

move_towards_point(objplayer.x-50,y,3)

if hspeed>=0

{

dir=0;

sprite_index=sprenemy1walkright;

}

else

{

dir=1;

sprite_index=sprenemy1walkleft;

}}

else if point_distance(x,y,objplayer.x,objplayer.y) > 100

{

speed=0;

if dir=0

sprite_index=sprenemy1right

else

sprite_index=sprenemy1left

}}

 

Pierwszy odpowiada za to że gdy jest kolizja zombie z pociskiem, zombie ma iść w stronę postaci. Kod działa jak należy. Drugi sprawdza odległość od postaci. Również działa. Problem pojawia się natomiast gdy obydwa bloki wsadzam do jednego stepa. Działa jedynie pierwszy. Ktoś mi wyjaśni co jest nie tak? Z góry dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

@Up dobrze mówi

 

GML
//PIERWSZY

if atak=1

{

if dir=0

move_towards_point(objplayer.x+50,y,3)

else

move_towards_point(objplayer.x-50,y,3)

 

if hspeed>=0

{

dir=0;

sprite_index=sprenemy1walkright;

}

else

{

dir=1;

sprite_index=sprenemy1walkleft;

}

}

else if atak=0

{

speed=0;

if dir=0

sprite_index=sprenemy1right

else

sprite_index=sprenemy1left

}

 

GML
//DRUGI

if point_distance(x,y,objplayer.x,objplayer.y) < 150

{

if dir=0

move_towards_point(objplayer.x+50,y,3)

else

move_towards_point(objplayer.x-50,y,3)

 

if hspeed>=0

{

dir=0;

sprite_index=sprenemy1walkright;

}

else

{

dir=1;

sprite_index=sprenemy1walkleft;

}

}

else if point_distance(x,y,objplayer.x,objplayer.y) > 100

{

speed=0;

if dir=0

sprite_index=sprenemy1right

else

sprite_index=sprenemy1left

} //} - jedna klamra za dużo</span>

Jak zaczniesz dobrze formatować kod to szybciej znajdziesz błędy :)

Odnośnik do komentarza
Udostępnij na innych stronach

Obydwa bloki sformatowałem i dokładnie oglądnąłem. Wstawiłem je nawet osobno w oddzielnych "Execute script" i dalej nic.

 

EDIT:

 

Działa, wykorzystałem funkcję "or".

 

GML
if atak=1 or point_distance(x,y,objplayer.x,objplayer.y) < 150

{

if dir=0

move_towards_point(objplayer.x+50,y,3)

else

move_towards_point(objplayer.x-50,y,3)

 

if hspeed>=0

{

dir=0;

sprite_index=sprenemy1walkright;

}

else

{

dir=1;

sprite_index=sprenemy1walkleft;

}

}

else

{

speed=0;

if dir=0

sprite_index=sprenemy1right

else

sprite_index=sprenemy1left

}

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi o to że może wpaćkałeś to do jednego if'a i może być tak że jeśli pierwszy warunek się nie wykona to drugi także. Poza tym jeśli chodzi o kolejność to może być tak że gdzieś w tym co wykonujesz pierwsze przestawiasz jakąś zmienną która uniemożliwia wykonanie drugiego bloku.

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