I am Lord Opublikowano 5 Stycznia 2012 Udostępnij Opublikowano 5 Stycznia 2012 edit: a nie jednak to też nie zadziała :/ coś innego wymyślę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Zając Opublikowano 5 Stycznia 2012 Autor Udostępnij Opublikowano 5 Stycznia 2012 edit: a nie jednak to też nie zadziała :/ coś innego wymyślę Spoko, wielkie dzięki za te całe starania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 6 Stycznia 2012 Udostępnij Opublikowano 6 Stycznia 2012 Dodaj parenta parentowi(obj_block i obj_walker) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 6 Stycznia 2012 Udostępnij Opublikowano 6 Stycznia 2012 Racja wtedy można zrobić tak: GML if ( collision_line( xprevious, yprevious, x, y, p_shootable, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, p_shootable ) if ( _other > 0 ) switch ( _other.object_index ) { case obj_walker: instance_destroy(); // pocisk się zniszczy with ( _other ) instance_destroy(); // przeciwnik takze break; case obj_block: instance_destroy(); break; // tutaj tylko pocisk sie zniszczy ( sciana nie ) break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 6 Stycznia 2012 Udostępnij Opublikowano 6 Stycznia 2012 Kombinujecie jak koń pod górę : O W pocisku dodaj zmienne iii, xx i yy. Skrypt collision_bin, który napisałem dawno i jest do znalezienia na forum bez problemu (argumenty dokładnie takie same jak w collision_line): GML var x1,x2,y1,y2,obj,prec,notme; x1 = argument0 x2 = argument2 y1 = argument1 y2 = argument3 obj = argument4 prec = argument5 notme = argument6 if(collision_line(x1,y1,x2,y2,obj,prec,notme)) { repeat(log2(point_distance(x1,y1,x2,y2))) { if(collision_line(x1,y1,mean(x1,x2),mean(y1,y2),obj,prec,notme)) { x2 = mean(x1,x2) y2 = mean(y1,y2) } else { x1 = mean(x1,x2) y1 = mean(y1,y2) } } xx = x2 yy = y2 return 1 } else { xx = x2 yy = y2 return 0 exit } Teraz Step obiektu pocisk: GML collision_bin(xprevious,yprevious,x,y,all,1,1) iii = collision_point(xx,yy,all,1,1) if(iii) { if(iii.object_index = wrog) { with(iii) { //kod, gdy pocisk zderza się z wrogiem } instance_destroy() } else if(iii.object_index = sciana) instance_destroy() } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Zając Opublikowano 7 Stycznia 2012 Autor Udostępnij Opublikowano 7 Stycznia 2012 Racja wtedy można zrobić tak: GML if ( collision_line( xprevious, yprevious, x, y, p_shootable, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, p_shootable ) if ( _other > 0 ) switch ( _other.object_index ) { case obj_walker: instance_destroy(); // pocisk się zniszczy with ( _other ) instance_destroy(); // przeciwnik takze break; case obj_block: instance_destroy(); break; // tutaj tylko pocisk sie zniszczy ( sciana nie ) break; } } Kurde no... Mam w kodzie coś takiego a jak napotka ściante to leci przez nią pocisk powoli, cholera wie czemu zamiast się zniszczyć. Przy kolizji z obj_walker działa dobrze... GML if ( collision_line( xprevious, yprevious, x, y, p_shootable, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, p_shootable ) if ( _other > 0 ) switch ( _other.object_index ) { case obj_walker: instance_destroy(); // pocisk się zniszczy with ( _other ) s_walkercol(); // przeciwnik takze break; case obj_block: instance_destroy(); break // tutaj tylko pocisk sie zniszczy ( sciana nie ) break; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Zając Opublikowano 7 Stycznia 2012 Autor Udostępnij Opublikowano 7 Stycznia 2012 Kombinujecie jak koń pod górę : O W pocisku dodaj zmienne iii, xx i yy. Skrypt collision_bin, który napisałem dawno i jest do znalezienia na forum bez problemu (argumenty dokładnie takie same jak w collision_line): GML var x1,x2,y1,y2,obj,prec,notme; x1 = argument0 x2 = argument2 y1 = argument1 y2 = argument3 obj = argument4 prec = argument5 notme = argument6 if(collision_line(x1,y1,x2,y2,obj,prec,notme)) { repeat(log2(point_distance(x1,y1,x2,y2))) { if(collision_line(x1,y1,mean(x1,x2),mean(y1,y2),obj,prec,notme)) { x2 = mean(x1,x2) y2 = mean(y1,y2) } else { x1 = mean(x1,x2) y1 = mean(y1,y2) } } xx = x2 yy = y2 return 1 } else { xx = x2 yy = y2 return 0 exit } Teraz Step obiektu pocisk: GML collision_bin(xprevious,yprevious,x,y,all,1,1) iii = collision_point(xx,yy,all,1,1) if(iii) { if(iii.object_index = wrog) { with(iii) { //kod, gdy pocisk zderza się z wrogiem } instance_destroy() } else if(iii.object_index = sciana) instance_destroy() } A tu mi wywalają errory przy log'ach jakieś z tego skryptu :mellow: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 7 Stycznia 2012 Udostępnij Opublikowano 7 Stycznia 2012 Wiem co to powoduje ale nie wiem jak naprawić. Chodzi oto że _other.object_index nie działa z indexami parentów tylko z indexami objectów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 7 Stycznia 2012 Udostępnij Opublikowano 7 Stycznia 2012 Jeśli sie niemyle istnieje funkcja object get parent lub coś w tym stylu. 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ę