Lidzet Opublikowano 17 Października 2009 Udostępnij Opublikowano 17 Października 2009 GML dis = point_distance(round(x),round(y),round(o_player.x),round(o_player.y)); if dis < max_distance * 0.1 { view_time = 50; } if !collision_line(round(x),round(y),round(o_player.x),round(o_player.y),o_wall,1,1) { if dis < max_distance { dir = point_direction(round(x),round(y),round(o_player.x),round(o_player.y)); if dir > direction - (max_angle/2) && dir < direction + (max_angle/2) { view_time = 50; } } } if view_time <= 0 { direction_start += cos(degtorad(argument[0])); argument[0] += 1; if argument[0] > 360 argument[0] = 0; direction = direction_start; } else { view_time -= 1; direction = point_direction(round(x),round(y),round(o_player.x),round(o_player.y)); speed = 0; } image_angle = direction; Dobra jak ten kod przekształcić żeby wróg po zobaczniu mnie robił to: GML direcion=point_direction(x,y,obj_bohater.x,obj_bohater.y) image_angle=direction if distance_to_object(obj_bohater) < 200 && distance_to_object(obj_bohater)>20 {if collision_line(x,y,obj_bohater.x,obj_bohater.y,all,0,0) direction = point_direction(x,y,obj_bohater.x,obj_bohater.y)-90 speed = 3 direction=point_direction(x,y,obj_bohater.x,obj_bohater.y) image_angle=direction if alarm[0]=-1 alarm[0]=30 } Normalnie to robi ale widzi przez ściany bo dałem żeby akcja (jak zresztą widać) wykonywała się kiedy znajde się chyba 200 pixelów od niego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 17 Października 2009 Udostępnij Opublikowano 17 Października 2009 Sprawdzaj argument collision_line, i jesli jest falszywe, akcja. collision_line(x1,y1,x2,y2,obj,prec,notme) -ta funkcja testuje, czy obiekt odbywa kolizję z linią rozciągniętą pomiędzy punktami x1,y1 a x2,y2. Ta funkcja jest naprawdę przydatna. Za jej pomocą możemy sprawdzić, czy np: obiekt1 "widzi" obiekt 2, blokujac jego widok np scianami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lidzet Opublikowano 17 Października 2009 Autor Udostępnij Opublikowano 17 Października 2009 Sprawdzaj argument collision_line, i jesli jest falszywe, akcja. collision_line(x1,y1,x2,y2,obj,prec,notme) -ta funkcja testuje, czy obiekt odbywa kolizję z linią rozciągniętą pomiędzy punktami x1,y1 a x2,y2. Ta funkcja jest naprawdę przydatna. Za jej pomocą możemy sprawdzić, czy np: obiekt1 "widzi" obiekt 2, blokujac jego widok np scianami. yyyyy......... to co mam zrobić z tym kodem co mówisz? mam te colision line dodać do tego kodu a potem akcje: direcion=point_direction(x,y,obj_bohater.x,obj_bohater.y) image_angle=direction if distance_to_object(obj_bohater) < 200 && distance_to_object(obj_bohater)>20 {if collision_line(x,y,obj_bohater.x,obj_bohater.y,all,0,0) direction = point_direction(x,y,obj_bohater.x,obj_bohater.y)-90 speed = 3 direction=point_direction(x,y,obj_bohater.x,obj_bohater.y) image_angle=direction if alarm[0]=-1 alarm[0]=30 } Tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
boom Opublikowano 17 Października 2009 Udostępnij Opublikowano 17 Października 2009 banalny sposób na wykorzystanie colision line: https://gmclan.org/up5319_4_przyk_ad.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lidzet Opublikowano 17 Października 2009 Autor Udostępnij Opublikowano 17 Października 2009 banalny sposób na wykorzystanie colision line: https://gmclan.org/up5319_4_przyk_ad.html Dzięki :) 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ę