Moho Opublikowano 16 Lutego 2013 Udostępnij Opublikowano 16 Lutego 2013 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 Więcej opcji udostępniania...
Lechu4444 Opublikowano 16 Lutego 2013 Udostępnij Opublikowano 16 Lutego 2013 Może chodzi o kolejność albo nie zamknąłeś jakiegoś nawiasu klamrowego, jak nie o to to najlepiej zostawić w dwóch blokach i się nie bawić. ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
M@ILOSZ Opublikowano 17 Lutego 2013 Udostępnij Opublikowano 17 Lutego 2013 Czemu tam są dwa nawiasy klamrowe na końcu drugiego bloku kodu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 17 Lutego 2013 Udostępnij Opublikowano 17 Lutego 2013 @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 Więcej opcji udostępniania...
Moho Opublikowano 17 Lutego 2013 Autor Udostępnij Opublikowano 17 Lutego 2013 Klamra na końcu ma być ponieważ obydwa bloki są zaklamrowane jeszcze. Więc w zasadzie dalej jestem w kropce. Lechu4444, co masz na myśli? ; p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 17 Lutego 2013 Udostępnij Opublikowano 17 Lutego 2013 Problem pojawia się natomiast gdy obydwa bloki wsadzam do jednego stepa.Wstaw cały kod lub sformatuj go podobnie do tego co ja pokazałem, błąd sam wyjdzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Moho Opublikowano 17 Lutego 2013 Autor Udostępnij Opublikowano 17 Lutego 2013 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 Więcej opcji udostępniania...
Lechu4444 Opublikowano 17 Lutego 2013 Udostępnij Opublikowano 17 Lutego 2013 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 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ę