Robię grę 2D. W tej chwili latający helikopter jest sterowany przez gracza. Sterowanie odbywa się za pomocą klawiszy strzałek: GÓRA, LEWO i PRAWO.
Jest to prędkość wzdłuż osi y dy
, a prędkość wzdłuż osi x wynosi dx
.
Jego fizyka wygląda następująco:
Ilekroć przycisk UP nie jest wciśnięty , dy
przyspiesza ze stałym przyspieszeniem, bez końca w dół. (Powaga). dx
pozostaje w aktualnej wartości.
Gdy UP wciśnięty , dy
przyspiesza ze stałym przyspieszeniem, co obecnie jest to, aż do 4 (w górę, aż do osiągnięcia prędkości 4). dx
pozostaje w aktualnej wartości.
Po lewej stronie jest wciśnięty , dx
przyspiesza w stałym przyspieszeniem, z tego co obecnie jest to, do -4 .
Po naciśnięciu PRAWO , dx przyspiesza ze stałym przyspieszeniem, niezależnie od tego, jakie jest obecnie, do 4 .
(Kiedy LEWY lub PRAWY są naciskane, a GÓRA nie jest naciskana jednocześnie, jak powiedziałem: dy
coraz bardziej maleje, ponieważ grawitacja wpływa na helikopter)
Wszystko to sprawia, że śmigłowiec często podąża za łukami w powietrzu, a nie po liniach prostych.
To tworzy fizykę, która wydaje się całkiem realistyczna.
Moje pytanie brzmi:
Śmigłowiec przeciwnika, AI, powinien poruszać się przy użyciu tego samego systemu fizyki.
Powiedzmy, że AI chce dostać się z miejsca, w którym się aktualnie znajduje, do punktu B.
Gdyby w grze nie było grawitacji i stopniowego przyspieszania, byłoby to łatwe. Po prostu narysowałbym wektor z pozycji AI do punktu B i kazałbym AI podążać za nim.
Ale ponieważ istnieje grawitacja i stopniowe przyspieszenie, AI nigdy nie może poruszać się w linii prostej (prawie). jaki byłby najlepszy sposób, aby sztuczna inteligencja przeszła do punktu B tak oszczędnie, jak to możliwe?
Jak mogę wziąć pod uwagę grawitację, przenosząc AI do określonego miejsca docelowego?
(Jeśli łatwiej to wytłumaczyć, proszę rozważyć punkt B na tym samym poziomie na osi y co AI, a nie na przekątnej.)
Dzięki