Skocz do zawartości
Patryqss

Odwracanie się w kierunku bohatera

Rekomendowane odpowiedzi

Witam,

Mam mały problem z odwracaniem się wroga w kierunku mojego bohatera. W tej chwili kod odwracania się wygląda tak:

1.png.e768f85a26769ee05cda9a77501fd9f8.png

 

Jak można jednak łatwo zauważyć, lew "dzieli" sobie obszar dookoła siebie w ten sposób (x, y są wyśrodkowane w obu obiektach):

2.png.9ddee2102c67953091f311496c24699e.png

Przez to, gdy jestem wciąż po jego lewej, ale powyżej jego igreka, on odwraca się już w przód i przez to atak nie trafia tam gdzie powinien. Chciałbym zrobić tak, żeby podzieliło się to w mniej więcej ten sposób:

3.png.1ac681e3ad729109ce49bddcf1490898.png

 

Macie może pomysł jak napisać taki kod, żeby lew to ogarnął i atakował precyzyjniej?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

var dir = (point_direction(objLew.x, obj.Lewy.y, objHerkules.x, objHerkules.y) + 45) % 360; // dodajemy 45 stopni żeby 0 oznaczało tak naprawdę -45 i bierzemy resztę z dzielenia przez 360, żeby np. 316+45 dawało nam 1 a nie 361.

if (dir < 45) { /* prawo */ } else if (dir < 135) { /* góra */ } else if (dir < 225) { /* lewo */ } else { /* dół */}

var dir = (point_direction(objLew.x, objLew.y, objHerkules.x, objHerkules.y) + 45) % 360; // dodajemy 45 stopni żeby 0 oznaczało tak naprawdę -45 i bierzemy resztę z dzielenia przez 360, żeby np. 316+45 dawało nam 1 a nie 361.

if (dir < 45) { /* prawo */ } else if (dir < 135) { /* góra */ } else if (dir < 225) { /* lewo */ } else { /* dół */}

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzięki, wszystko ładnie działa, bardzo przydatna funkcja, ale musiałem zmienić końcówkę na taką:

if (dir < 90) { /* prawo */ } else if (dir < 180) { /* góra */ } else if (dir < 270) { /* lewo */ } else { /* dół */}

Dopiero na takich ustawieniach lew zaczął w dobrych momentach się obracać

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Masz zupełną rację! Przecież skoro dodałem 45, to 45 na rysunku zamieni się na 90 w kodzie. No ale udało się samemu rozwiązać, czyli będą z Ciebie ludzie :) Kto drąży i kombinuje ten daleko zachodzi!

  • Super (+1) 2

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×