Skocz do zawartości

Pole widzenia obiektu działa tylko w jedną stronę


Sutikku

Rekomendowane odpowiedzi

Mam dwa obiekty i oba stale się obracają, w lewo bądź w prawo. Zmienna kat, to zmienna pola widzenia, różne przyjmuje wartości, ale próbowałem dla różnych i coś nie trybi.

GML
if!( collision_line(x, y, wrog.x, wrog.y, obj_control, 1, 0) )

{

dirt=point_direction(x, y, wrog.x, wrog.y);

if( abs(angle_difference(direction, dirt)) < kat)

{

wykryto=1;

}

}

Kod nie działa, jeśli obiekt (są tylko dwa) obraca się w prawo. I w sumie nie wiem o co chodzi.

Odnośnik do komentarza
Udostępnij na innych stronach

E, konsola mi uciekła. Nie mogę wyłączyć gmsa, bo włącza mi się bardzo, bardzo długo, a czasem i wcale. Ale tak teraz patrzę i to nie działa tylko przy bardzo małych wartościach zmiennej kat na przykład 0.1. I to nie zawsze, czasem coś załapie. Tak bardzo mi nie zależy na tych ułamkowych wartościach, ale jednak.

O, zapomniałem dodać, że oba obiekty się poruszają.

Odnośnik do komentarza
Udostępnij na innych stronach

Czegoś nie rozumiem. Spodziewasz się że warunek (zależny od direction które jest w zakresie 0-360) będzie działał dla niewielkich ułamkowych wartości?

 

Mogę od siebie dać dać tip optymalizacyjny:

GML
dirt=point_direction(x, y, wrog.x, wrog.y);

if( abs(angle_difference(direction, dirt)) < kat && !collision_line(x, y, wrog.x, wrog.y, obj_control, 1, 0) )

{

wykryto=1;

}

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