kt1117 Opublikowano 17 Marca 2011 Udostępnij Opublikowano 17 Marca 2011 Mam pewien problem, muszę napisać kod powodujący zaginanie liny, zacząłem w taki sposób: GML if lina=2 and collision_line(x,y,hak.x,hak.y,teren,1,0) { a=1 checkpointy[0,0]=x checkpointy[0,1]=y do { xx=-1 dir=point_direction(checkpointy[a-1,0],checkpointy[a-1,1],hak.x,hak.y) do { xx+=1 } until collision_point(checkpointy[a-1,0]+lengthdir_x(xx,dir),checkpointy[a-1,1]+lengthdir_y(xx,dir),teren,1,0) checkpointy[a,0]=lengthdir_x(xx,dir) checkpointy[a,1]=lengthdir_y(xx,dir) a+=1 } until !collision_line(checkpointy[a,0],checkpointy[a,1],hak.x,hak.y,teren,1,0) } I niestety podaje mi liczbę z kosmosu, mógł by mi ktoś powiedzieć co jest źle? Nie potrzebuje gotowego kodu, wystarczy mi ,że ktoś nakieruje mnie na dobry tok myślenia. E:Chcę by funkcja zwróciła mi miejsca, w których występuje kolizja, a gra zawiesza się, podając na dodatek złe liczby. E2:Pomyliłem składnie until'a, jak teraz poprawiłem, to zawiesza się po upływie dłuższego czasu z powodu zbyt dużej liczby pól tablicy. Doszedłem do tego, że nadrzędna pętla funkcji wykonuje się zbyt długo, ale jeszcze nie wiem jak to naprawić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 17 Marca 2011 Udostępnij Opublikowano 17 Marca 2011 zrob tak, ze jesli masz juz kod na normalna line, to gdy ta natrafi na przeszkode niech lina z hakiem bedzie rysowana jako zwykla linia, zas lina od przeszkody do bohatera bedzie oddzielna lina z punktem zaczepienia na przeszkodzie, jasno wytlumaczylem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 17 Marca 2011 Autor Udostępnij Opublikowano 17 Marca 2011 To ja wiem, tylko, że muszę mieć miejsca zgięć. Kombinuje już trochę, ale nie chce mi wyjść. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 17 Marca 2011 Udostępnij Opublikowano 17 Marca 2011 GML create xzahaczenia=0 yzahaczenia=0 step //sprawdzamy czy gdzie kolwiek wystapila kolizja, zeby program sie nie zdyszal if(collision_line(xhak,yhak,x,y,teren,1,1)){ xzahaczenia=xhak; yzahaczenia=yhak; while(!collision_point(lengthdir_x(xzahaczenia,dir),lengthdir_y(yzahaczenia,dir),teren,1,0)){ xzahaczenia++; yzahaczenia++;//tutaj nie zabardzo wiem czy dobrze, nie pamietam juz jak dokladnie uzywalo sie lenghdirow } xzahaczenia jest twoim nowym punktem xhaka i to samo z y Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 17 Marca 2011 Autor Udostępnij Opublikowano 17 Marca 2011 Chodziło mi o to, żeby można było użyć wielu zagięć. Dlatego w tamtym kodzie używałem tablic. Spróbuję jeszcze pokombinować, ale widzę, że to bardziej złożony problem i od ręki tego nie zrobię. 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ę