Skocz do zawartości

pole widzenia


Rekomendowane odpowiedzi

na stronie gmclan jest przykład na pole widzenia top down. ma on jednak błąd, bo przy pewnym ustawieniu mimo znajdowania się w polu przeciwnik nas nie widzi. Da się to jakoś naprawić? Sam kombinowałem właśnie w ten sposób zanim znalazłem przykład, ale nie umiem tego dopracować.

Odnośnik do komentarza
Udostępnij na innych stronach

dla przeciwnika step:

if !collision_line(round(x),round(y),round(obj_player.x),round(obj_player.y),obj_wall,1,1) 
{     {
        dir = point_direction(round(x),round(y),round(obj_player.x),round(obj_player.y));
        
        if dir > direction - (max_angle/2)
        && dir < direction + (max_angle/2) 
        {            widzi=1  ;        }
                          else widzi=0
        
    }
}else widzi=0                 

max_angle - kąt widzenia = 160

przy directionie przeciwnika 0,  direction - (max_angle/2) = -80. jeśli dir = 350 to przeciwnik nas nie widzi, mimo że jesteśmy w polu.

póki zakres pola widzenia jest >0 jest ok.

czy można to jakoś łatwo naprawić? czy robić każdemu przeciwnikowi obiekt w kształcie pola widzenia i badać czy gracz wchodzi z nim w kolizje i nie ma ściany między nim a przeciwnikiem?

 

wolałbym to rozwiązać w miarę możliwości GM8. ewentualnie GMS1.4

Odnośnik do komentarza
Udostępnij na innych stronach

W nowszych GM (chyba od 8.1) możesz zastąpić

if dir > direction - (max_angle/2)
        && dir < direction + (max_angle/2) 

przez 

if angle_difference(dir, direction) < max_angle

To powinno rozwiązać problemy z "dziwnymi" wartościami direction

 

I pamietaj aby najpierw sprawdzać direction a dopiero potem collision_line(), bo ten drugi jest "cięższy dla procesora" więc chcesz go sprawdzać tylko gdy pierwszy warunek już jest spełniony

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ę...