uzytkownik123 Opublikowano 18 Marca 2020 Udostępnij Opublikowano 18 Marca 2020 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 Więcej opcji udostępniania...
Adriann Opublikowano 18 Marca 2020 Udostępnij Opublikowano 18 Marca 2020 Myślę że najpierw powinieneś zamieścić link do przykładu i podać na jakiej wersji game makera pracujesz:) I przy "pewnym ustawieniu", o jakie dokładnie chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 18 Marca 2020 Udostępnij Opublikowano 18 Marca 2020 Przykład był pisany 14 lat temu. Sporo się pozmieniało i jak pozostałe przykłady służy do nauki nie jest gotowym rozwiązaniem. Zadaj konkretne pytanie jaki jest problem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
uzytkownik123 Opublikowano 19 Marca 2020 Autor Udostępnij Opublikowano 19 Marca 2020 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 Więcej opcji udostępniania...
Threef Opublikowano 20 Marca 2020 Udostępnij Opublikowano 20 Marca 2020 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Marca 2020 Administratorzy Udostępnij Opublikowano 22 Marca 2020 Drugi sposób to zapewne zrobić direction = direction % 360; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Marca 2020 Udostępnij Opublikowano 24 Marca 2020 Po co te zaokrąglenia? wow 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ę