Skocz do zawartości

Przewidywanie pozycji gracza


Rekomendowane odpowiedzi

Cześć wszystkim. Zastanawiam się jak podejść do problemu, w którym przeciwnicy przewidują pozycje gracza na podstawie jego ruchu w grze topdown.


Założenia:

- brak grawitacji - pociski znikają dopiero za ekranem

- ruch gracza ma stałą wartość bez przyśpieszenia. Takie same właściwości mają pociski wystrzelone z działka

- wieżyczki mogą robić błyskawiczny obrót, jeżeli to uprości kod

 

Zdaję sobie sprawę, że to może być całkiem złożony kod, dlatego proszę o wytłumaczenie jak się za to zabrać. O jakich zagadnieniach fizycznych/matematycznych poczytać. Może już kiedyś coś takiego implementowaliście i możecie mnie jakoś pokierować.

PS: To mój pierwszy post tutaj. Bardzo fajnie, że jest polskie community game makera. Używam go od kiedy stał się darmowy do niekomercyjnego użytku. Wcześniej tworzyłem tylko proste gry konsolowe.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Pozycja w następnej klatce jest generalnie prosta:

 

nx = lengthdir_x(predkosc_gracza, kierunek_gracza);
ny = lengthdir_y(predkosc_gracza, kierunek_gracza);

 

Natomiast pozycję "k" klatek do przodu, zakładając stałą prędkość gracza i brak zmiany kierunku, znajdujemy, mnożąc prędkość_gracza przez "k".

Odnośnik do komentarza
Udostępnij na innych stronach

Chciałem podrzucić przykład, który sam zrobiłem prawie 14 lat temu :D Ale coś się nam z pobieraniem zepsuło, no i nie wiem czy @gnysek konwertował na nową wersję GMa. W każdym razie tak jak gnysek napisał + przeliczenie za ile klatek doleci pocisk do przeciwnika w danej pozycji. Nie jest to oczywiście 100% gwarancja celności, bo obiekt może zmienić kierunek, ale jest to jakiś punkt wyjścia. 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
W dniu 9.01.2024 o 19:16, Uzjel napisał(a):

Ale coś się nam z pobieraniem zepsuło, no i nie wiem czy @gnysek konwertował na nową wersję GMa.

 

Nie, nie konwertowałem, ale pobieranie już działa ;) https://gmclan.org/plik/199

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
W dniu 8.01.2024 o 10:01, gnysek napisał(a):

Pozycja w następnej klatce jest generalnie prosta:

 

nx = lengthdir_x(predkosc_gracza, kierunek_gracza);
ny = lengthdir_y(predkosc_gracza, kierunek_gracza);

 

Natomiast pozycję "k" klatek do przodu, zakładając stałą prędkość gracza i brak zmiany kierunku, znajdujemy, mnożąc prędkość_gracza przez "k".

A nie wystarczy potraktowac x i y jak vector2D?

nx = postac_gracza.x + postac_gracza.hspeed;
ny = postac_gracza.y + postac_gracza.vspeed;

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
20 godzin temu, pablo1517 napisał(a):

A nie wystarczy potraktowac x i y jak vector2D?

Można, ale ja już zrobiłem założenie bez wbudowanych zmiennych. Ale można jak najbardziej, opisałem to w artykule: https://gmclan.org/artykul/101

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