Zrobiłbym to z jakimś rozwiązaniem drzewa zachowań - ty podążasz do celu i zwracasz uwagę na wszystkie przeszkody, które blokowały twoje A *. Jeśli ci się nie uda, sprawdzisz, czy istnieją obiekty, które mogą pomóc pokonać te przeszkody, w takim przypadku ścieżka do tego obiektu. Powtarzać. Oznacza to, że agent musi spróbować dotrzeć do celu i ponieść porażkę, zanim wpadnie na pomysł użycia narzędzi, co może zająć trochę czasu, zwłaszcza jeśli istnieje ogromny świat płytek, które należy sprawdzić. Nie może jednak wydawać się zbyt nie na miejscu, aby agent zastanawiał się, jak rozwiązać problem.
Mogę sobie jednak wyobrazić prawdziwe, hardkorowe rozwiązanie. Dodaj kolejny wymiar do siatki wyszukiwania ścieżek. Tak więc w przypadku mapy 2D siatkę wyznaczania ścieżek tworzy się w 3D. W tym prostym przykładzie ten nowy wymiar miałby tylko głębokość dwa, ale w prawdziwej grze szybko stałby się duży.
Przy z = 0 mapujesz teren w normalnych warunkach, co oznacza, że płytki wodne są uważane za nieprzejezdne.
Przy z = 1 odwzorowujesz teren tak, jak jest, mając prowizję, co oznacza, że płytki wodne są uważane za możliwe do przejścia (ale jeśli masz na przykład płytki ścienne, mogą one pozostać twarde).
Znalezienie ścieżki to zwykła A * w wymiarach x i y, co oznacza, że każda komórka siatki ma dostęp do swoich sąsiadów. Jednak w wymiarze Z A * NIE może się rozprzestrzeniać.
Z wyjątkiem tego, gdzie jest prowizja. Obiekt grabi działa jako otwór między z = 0 a z = 1 w siatce wyszukiwania ścieżki.
Oznacza to, że A * zalej wypełnienie na zewnątrz w z = 0, uderzy w wodę i zabraknie opcji - wtedy rozprzestrzeni się do z = 1 przez płytkę grabi, a przy z = 1 (tam, gdzie można chodzić po wodzie) znaleźć drogę do celu. Skutkuje to tym, że NPC bez wahania przesuwa się na prowizję, a następnie przesuwa najkrótszą ścieżkę do celu.