Obecnie moja bardzo podstawowa struktura AI ma agentów, którzy poruszają się po poszarpanej ścieżce złożonej z szeregu punktów.
Robią to po prostu przesuwając swoją pozycję z jednego punktu do drugiego. Kiedy dotrą do następnego punktu, przechodzą do następnego i tak dalej. Jak mogę to zmienić, aby poruszały się płynnie wzdłuż zakrzywionej wersji ścieżki i jak wygenerować krzywą?
mathematics
algorithm
path-finding
SirYakalot
źródło
źródło
Odpowiedzi:
Poszukujesz wygładzenia ścieżki. Oczywiście, jak zauważył bummzack, chcesz również upewnić się, że każde wygładzenie ścieżki, które wykonasz, spowoduje legalne ruchy Twoich agentów.
W tym artykule z Gamasutra wyjaśniono prawie wszystko, co musisz wiedzieć, w tym wygładzanie ścieżki, legalne zakręty i realistyczne, płynne algorytmy skrętu.
Inną alternatywą, która jest nieco prostsza, jest zachowanie Seek z małym okręgiem / kulą ograniczającą, aby sprawdzić, czy agent znajduje się w następnym punkcie ścieżki lub blisko niego.
źródło
Ponieważ znasz już swoje punkty kontrolne, wystarczy zaktualizować kod interpolacji, aby użyć algorytmu krzywizny (na przykład Hermite lub Cosinus).
Witryny te zawierają świetne wyjaśnienia i przykładowy kod, który powinien zacząć:
Metody interpolacji Paula Bourke'a
Sol :: Poradniki - Sztuczki interpolacyjne
źródło
Mam zamiar przejść tutaj wbrew zasadom i zasugerować, że zamiast wstępnie generować krzywe, po prostu obsługuj je klatka po klatce, używając (na przykład) tej samej logiki, której użyłbyś do utworzenia bazowania -missile .
Będzie to o wiele łatwiejsze i prawdopodobnie bardziej realistyczne, ponieważ nie potrzebujesz specjalnych przypadków, gdy między ścianami są ściany - po prostu obsługujesz wykrywanie kolizji jak zwykle.
Minusem jest to, że ruch będzie wyglądał nieoptymalnie. Obiekt zawsze będzie podążał najbardziej bezpośrednią ścieżką od jednego punktu do drugiego, co oznacza, że w przeciwieństwie do splajnu, nie zacznie skręcać w kierunku punktu 3, dopóki nie minie punktu 2. W zależności od twojej sytuacji, to może, ale nie musi być naprawialnym poprzez dostosowanie punktów na drodze (jeśli to nawet problem).
źródło
Wyszukiwarka ścieżek powinna dać ci ścieżkę i nie powinieneś jej modyfikować. Wierzę, że można zmodyfikować algorytm wyszukiwarki ścieżek, aby wziąć pod uwagę, że ścieżka z ostrymi zakrętami jest gorsza niż w przypadku gładkich krzywych, tak jak ma to miejsce w przypadku długiej ścieżki w porównaniu z krótkimi.
Prześlę tutaj jakieś rozwiązanie, jeśli znajdę chwilę, aby głęboko się nad tym zastanowić, ale myślę, że to jest właściwa droga.
źródło