* Wyszukiwanie ścieżek dla dynamicznych przeszkód i blokad wykonanych przez gracza?

11

Cześć, tworzę niszczyciele czołgów w Unity 5 i potrzebuję pomocy przy wyszukiwaniu ścieżek.

Mam zamiar użyć ścieżki Arons A * do mojej sztucznej inteligencji, która pozwala mi używać obiektów dynamicznych i aktualizować ścieżkę w czasie wykonywania. Jednak w mojej grze chcę, aby gracz mógł blokować stwory za pomocą specjalnych wieżyczek, które zmuszą stwory do zaatakowania „wieży bloków”, aby zamiast tego dotrzeć do celu.

Jak mogę osiągnąć coś takiego?

Obraz dla większej przejrzystości: wprowadź opis zdjęcia tutaj

Grimbox
źródło

Odpowiedzi:

22

Nie spojrzałem na konkretną implementację A * Aarona, ale przy normalnym A * możesz uwzględnić „wieżę blokową” jako przejezdny teren, ale zaktualizuj heurystykę, aby „koszt” był znacznie wyższy niż normalnej płytki (tak, że AI oceni, czy łatwiej jest zniszczyć blok i kontynuować, czy po prostu obejść ścieżkę, która nie jest zablokowana).

Następnie musisz zaktualizować AI, aby gdy wróg próbował przejść z normalnego kafelka na „kafelek bloku wieży”, automatycznie atakował aż do zniszczenia.

JackFrost
źródło
8
+1 Chciałbym dodać, że możesz chcieć obliczyć koszt wieży blokującej w zależności od tego, ile czasu zajmie jej liczba X i rodzaj stworów, jeśli istnieje jakakolwiek różnica. Wstępnie ustalony koszt wieży może być niedokładny, jeśli stwory z najniższego poziomu zajmą 5 sekund, aby je zniszczyć, ale jeden super-stwór może to zrobić w ciągu 1 sekundy.
Fuzzy Logic
0

Jeśli to, czego szukasz, jest rodzajem szyderczej wieży, możesz dodać zderzak do niej jako wyzwalacza, a gdy stwory wejdą w wyzwalacz, są po prostu skryptowane, aby zaatakować wieżę.

Jeśli chcesz, aby stwory atakowały wieże tylko wtedy, gdy nie ma alternatywnych ścieżek, wtedy, gdy ścieżka jest zablokowana, a A * jest wywoływany, aby obliczyć inną ścieżkę, jeśli zwróci zero, możesz skrypty wrogów, aby znaleźć wszystkie drwiące wieże i celuj w nich.

Leggy7
źródło