Skocz do zawartości

Polecenie do Pola widzenia wroga.


Lidzet

Rekomendowane odpowiedzi

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...