Siema #bordogamedev…

Siema #bordogamedev 🙂

Ostatnio dłubałem nad AI do mojej gry TankX, https://www.wykop.pl/wpis/41588875/gamedev-unity-unity3d-bordogamedev-prace-nad-ai-po/ , no i wydłubałem.

pokaż spoiler Jak kogoś to interesuje to update powinien wlecieć w ciągu 24 godzin jak przejdzie proces certyfikacji.

Jak przewidywałem dostałem białej gorączki próbując to wszystko spiąć ze sobą, ale na szczęście było znośnie. Coraz mniej rzeczy mnie w unity czy programowaniu potrafi zaskoczyć, co sobie cenię ( ͡° ͜ʖ ͡°) .

Jeśli kogoś interesuje jak to zrobiłem, pokrótce:
Każda plansza jest navmeshem. Wszystkie obiekty na niej, poza powerupami są oznaczone jako navmesh obstacle z opcją carve. Ścieżkę wyszukuje się za pomocą NavMeshPath, z której to zbieram info o pozycji wszystkich jej punktów (corners).
Mając te punkty, po prostu w każdym miejscu ścieżki stawiam obiekt path node, który posiada collider i w przypadku zderzenia, ten node wychodzi z kolejki. Za pomocą kodu, gdy ścieżka jest aktywna pojazd (jest to normalny pojazd z wheelcollider) a w zasadzie koła dostają info by po pierwsze przyspieszyć, po drugie obliczyć promień skrętu kół do kolejnego node.
Gdy pojazd się zawiesi, odlicza się timer, czy aby sam się nie wykaraska z opałów. Sprawdza to po prostu RigidBody.Velocity.Magnitude, musi być mniejsze od 1, czyli mniej niż ~3.6km/h . Jeżeli nie uda mu się wydobyć, pojazd prostuje koła i wycofuje do tyłu, plus oblicza nową ścieżkę do finalnego punktu.
Jest z tym sporo błędów i pewnie kod przepisze, ale tak to w skrócie wygląda. Tym bardziej, że mapy są ciasne i nie zawsze nawet człowiek wyjedzie szybko z opałów.

Samo AI ma widok 360 stopni wokół siebie, za pomocą raycastów. Zatrzymują się one na obiektach, choć, chciałbym by ignorowały obiekty jak miny czy powerupy. Ale nie wiem czy nie będą za bardzo op wtedy, bo gnoje potrafią nieźle wymierzyć.

Zmieniłem też za sugestią @Filopuk kamerę na orto. Bałem się że to popsuje perspektywę, ale koniec końców, wygląda lepiej, cienie pozwalają zachować wrażenie głębi a z każdego miejsca na mapie można wykręcić. Także, dzięki @Filopuk :).

Jeżeli ktoś ma #xboxone to jeśli chce obadać, zapraszam:
https://www.wykop.pl/wpis/40140169/dobry-dzien-gamedev-dzis-po-kilkunastu-miesiacach-/
Gra dostępna jest tylko na xboxie, ale ciągle zastanawiam się, czy aby jej nie przeportować, na itch.io czy gdzieś.

Dziękuje pozdrawiam i do następnego ( ͡° ͜ʖ ͡°)

#gamedev #unity #unity3d