Mam już taki kod:
GML
if collision_line(x,y,czek[zag,0],czek[zag,1],teren,1,0)
{
p=0; //początek przedziału w którym wyszukujemy wyniku
k=10000000; //koniec przedziału
while(p!=k) //w pewnym momencie nasz przedział będzie tak krótki, że będzie zawierał jeden element (p==k). To będzie nasz wynik
{
q=floor((p+k)/2); //Strzelamy w połowę przedziału i zapisujemy do zmiennej q
if(collision_line(x,y,lengthdir_x(q, point_direction(x,y,czek[zag,0],czek[zag,1])),lengthdir_y(q, point_direction(x,y,czek[zag,0],czek[zag,1])),teren,1,0)) //jeśli q spełnia nasz warunek...
k=q; //ucinamy przedział o wszystkie liczby większe od q
else //w przeciwnym wypadku...
p=q+1; //ucinamy przedział o wszystkie liczby mniejsze i równe q (bo q też jest złe więc je też ucinamy, stąd q+1)
}
zag+=1
czek[zag,0]=lengthdir_x(p, point_direction(x,y,czek[zag,0],czek[zag,1]))
czek[zag,1]=lengthdir_y(p, point_direction(x,y,czek[zag,0],czek[zag,1]))
}
Dobrze do tej pory?
E:Już wiem źle, w while powinno być odwrotnie. ;)
E2:A jednak nie.