Tworzę grę 2D na Androida i tworzę algorytm celowania dla pocisków AI, by trafiały wrogów zarówno ścieżką, jak i swobodnym ruchem. W tej chwili po prostu oblicza, gdzie będzie cel na odległość i wystrzeliwuje pocisk, aby go pokonać na tej odległości. Oczywiście oznacza to zmianę prędkości pocisku, aby osiągnąć cel.
Czy ktoś ma jakieś wskazówki dotyczące prostego algorytmu (optymalnego) do obliczania, kiedy pocisk musi wystrzelić i dokąd musi wycelować, jeśli może poruszać się tylko ze stałą prędkością? Powiedz, że pocisk leci dwa razy szybciej niż cel?
Jedyny sposób, w jaki mogę myśleć, to wyszukiwanie i wydaje się dość duży.
Odpowiedzi:
W stworzonej przeze mnie grze w obronę wieży użyłem równania kwadratowego, aby przewidzieć przecięcie, a tym samym celować. Poniższy fragment kodu celowania zakłada, że wróg jedzie ze stałą prędkością i kierunkiem. Zakłada również, że pocisk będzie podróżował ze znaną stałą prędkością (może to być dowolna prędkość, ale musi być znana algorytmowi).
Ponieważ określa on także czas uderzenia, po prostu czekałem, aż minie czas na wywołanie grafiki uderzenia w miejscu celu w tym czasie ... nie ma potrzeby wykrywania kolizji w celu ustalenia trafień.
źródło
a
jest 0? Spowoduje to podział przez zero wyjątku, ale co to oznacza w odniesieniu do zmiennej t? czy należy to uznać za „bardzo dużą liczbę”, czy jaki byłby najlepszy przypadek?Sztuczna inteligencja, położenie celu podczas wystrzeliwania pocisku, a ostateczne położenie celu w punkcie śmierci tworzy trójkąt. Oto, co powinieneś już wiedzieć:
Masz trzy części trójkąta, przypadek SSA, więc rozwiąż go w ten sposób
Kąt A powinien umożliwiać określenie kąta, pod jakim pocisk powinien zostać wystrzelony.
źródło