FPS Wykrywanie kolizji i ruch

11

W jaki sposób wykrywanie kolizji i ruch są zazwyczaj obsługiwane w FPS, szczególnie w przypadku niewielkich zmian wysokości gruntu, takich jak schody (zarówno na pochyłości, jak i spadku)?

Jason Kozak
źródło

Odpowiedzi:

12

Podmioty zwykle reprezentowane są przez kapsułę (cylinder z kulkami na końcach) przeciw geometrii świata (lub uproszczoną siatkę kolizyjną) w celu zderzenia ze światem.

Schody zwykle albo nie kolidują z niewidzialną rampą, albo poniżej pewnej wysokości zwykle podnosi się jako efekt uboczny rozwiązania kolizji. (dostaniesz wzajemne przenikanie z ruchem w ramach wielkości kroku, a rozdzielczość wyskoczy w górę jako najbliższa płaszczyzna)

Myślę, że tak działa Unreal 3, ale mogę się mylić. Pamiętam, że widziałem hierarchię pól ograniczających w Source, ale nie pamiętam, czy to była tylko walka. niezależnie od tego, kapsułki są proste i szybkie

Aaron Brady
źródło
1

W Unity 3D najprostszym sposobem jest posiadanie kontrolera z perspektywy pierwszej osoby. Zwykle postać musi podskoczyć, jeśli wysokość kroku jest większa niż przesunięcie kroku. Ale innym sposobem jest dodanie zderzacza pudełek i obrócenie go, aby postać mogła swobodnie prześlizgiwać się po schodach, jak gdyby była to rampa.


źródło
0

Odpowiedź Brady'ego jest dobra, ale jeśli chcesz zrobić hacky sposób, możesz po prostu rzucić promień na geometrię kolizji gruntu, dowiedzieć się, w który trójkąt uderza, a następnie użyć średniej ważonej wysokości wierzchołków trójkąta obliczyć wysokość gruntu.

BigSandwich
źródło
Co jeśli jest to duży, nachylony trójkąt? Czy nie potrafisz znaleźć punktu przecięcia promienia?
Gustavo6046,
Znasz już pozycję w płaszczyźnie, potrzebujesz tylko wysokości, dlatego podałem średnią ważoną. Polecam wybrać książkę o wykrywaniu kolizji, jeśli naprawdę chcesz pójść dalej. To nie jest najlepszy format do nauki matematyki.
BigSandwich,
O tak. Średnia ważona . Chyba źle to odczytałem. Mój błąd.
Gustavo6046,