Wygląda na to, że już odpowiedziałeś na swoje pytanie. * Jest prawdopodobnie najlepszym podejściem. Tak, oczywiście, można go używać w opisany sposób, w tym używając informacji o wysokości, aby uniknąć gór. Tak długo, jak jesteś w stanie uzyskać dostęp do informacji o dowolnej siatce na powierzchni twojego świata, nie ma powodu, dla którego nie możesz użyć jej w heurystyce A *.
Wreszcie, mylisz wyszukiwanie ścieżek z podążaniem ścieżką na końcu pytania. Szukanie ścieżki nie ma znaczenia dla grawitacji, chyba że dodasz ją jako heurystyczną, a ponieważ jesteś na powierzchni planety, grawitacja będzie zasadniczo taka sama na całej powierzchni. Wiele gier ma grawitację i ruch, nie widzę powodu, dla którego nie możesz.
Zasadniczo chcemy, aby mapa zmieniła kolor z czerwonego na niebieski, aby była taka sama na kuli, jak na sześcianie.
Ponieważ A * często zbliża się do swojego obecnego węzła, możesz łatwo stworzyć zestaw funkcji do uzyskiwania sąsiednich węzłów. Na przykład getXPlus()
, getXMinus()
, getZPlus()
i tak dalej. Funkcje te zajmą bieżący węzeł i zwrócą węzeł w kierunku określonym przez nazwę funkcji.
Przez większość czasu funkcje te mogą po prostu zwiększać wartość i być wykonywane na krawędziach, które się zmienią.
Będziesz chciał zmapować powierzchnię sześcianu na układ współrzędnych 2D. Jakkolwiek to zrobisz, zależy od ciebie, nie muszą one ustawiać się w linii, po prostu nadaj każdej przestrzeni siatki unikalną współrzędną X, Y.
Teraz, kiedy znajdujesz się na krawędzi i otrzymujesz sąsiednie pole siatki, niekoniecznie będzie to po prostu zwiększanie współrzędnych. Musimy dowiedzieć się, do której twarzy się poruszamy i przełączyć się na współrzędne tej twarzy.
Na przykład uzyskanie współrzędnej XPlus zmieni zarówno współrzędne X, jak i Y, ponieważ przenosimy się na nowe pole siatki na nowej powierzchni. Zielona linia reprezentuje krawędź między dwiema ścianami.
Teraz są to tylko globalne współrzędne, może być łatwiej użyć wewnętrznego lokalnego układu współrzędnych z trzecim wymiarem, który reprezentuje ścianę sześcianu, na której aktualnie się znajdujesz.
Tak czy inaczej, musisz mieć unikalną współrzędną dla każdego pola siatki na powierzchni sześcianu. Przemieszczanie się między nimi będzie zależeć od sposobu implementacji układu współrzędnych. Musisz wiedzieć, gdzie ta współrzędna jest odwzorowana również na powierzchni kuli.
Wszystko to powinno ostatecznie zostać wyabstrahowane, abyś nawet o tym nie wiedział.