Jak wykryć półki?

18

W mojej grze chciałbym, aby moja postać była w stanie chwycić półki i móc się podciągnąć, jeśli jest na to miejsce.

Jak wykryć, czy jest półka i czy postać ma wystarczająco dużo miejsca, aby się wspiąć?

doppelgreener
źródło
To pytanie zostało utworzone jako kanoniczna wersja dwóch wcześniejszych pytań. Zobacz meta dyskusję tutaj .
doppelgreener
1
Łącząc pytania, o których mówiono w meta: gamedev.stackexchange.com/questions/38066/... i gamedev.stackexchange.com/questions/15491/...
MichaelHouse

Odpowiedzi:

22

Film dla Overgrowth Alpha 132 pokazuje, jak wdrożyli wspinanie się po półce.

Ich metoda powinna działać w każdym silniku, nawet w silnikach 2D, w których zamiast cylindra i sfery użyłbyś prostokąta i koła.

Ich wykrywanie półek składa się z dwóch części:

Wykrywanie ścian (za pomocą kuli)

Gra sprawdza, czy gracz koliduje obecnie ze ścianą. Jeśli jest ściana, mogą występować półki, na które gracz może się chwycić. Druga część przejmuje analizę półek.

Wykrywanie półki (za pomocą cylindra)

Jeśli gracz styka się ze ścianą, cylinder jest przesuwany w dół z pewnej odległości powyżej pozycji gracza, aż dotknie półki. To determinuje trzy rzeczy:

  • Czy półka istnieje nad odtwarzaczem
  • Wysokość półki
  • Czy gracz ma miejsce na wspinaczkę na półkę, biorąc pod uwagę, że cylinder zajmuje to samo poziome miejsce co gracz.
doppelgreener
źródło
Niesamowita metoda i fantastyczny przykład +1
Bugster,
„cylinder jest przesuwany w dół z pewnej odległości powyżej pozycji gracza” Jaka odległość? Jest to bardzo ważne, gdy mamy do czynienia ze środowiskiem wewnętrznym (przypadkowo przecięlibyście sufit).
Tara
1
@Dudeson w przeszłości użyłem raycasta, aby początkowo znaleźć powierzchnię półki, a następnie sprawdziłem objętość, aby sprawdzić, czy jest wystarczająco dużo wolnego miejsca, aby się wspiąć. Ponieważ raycast jest kierunkowy, nie odczytuje pułapów jako fałszywych trafień - choć może być zaczepiony na następnym piętrze, jeśli pochodzenie jest o wiele za wysokie. Dokładne dane będą zależeć od wielu szczegółów każdej gry - wielkość postaci, zasięg ramienia, prześwit w poziomie, spadające prędkości itp.
DMGregory
@DMGregory Dobry pomysł z obsadą ray!
Tara,