Animacja i ruch wspinania się po półce (platformówka 2D)

11

Walka o podjęcie decyzji o wdrożeniu mechaniki wspinania się po półce w platformówce 2D napędzanej fizyką. Jaki jest najlepszy sposób, aby to zrobić bez nadmiernego skomplikowania?

Jak dotąd rozumiem (hobbysta tutaj nie jest zawodowcem) istnieje kilka opcji, w tym:

  1. Przyłóż kontrolowaną siłę do sztywnego ciała na osi y, aż pozycja korzenia znajdzie się tuż nad pozycją dłoni, a następnie zastosuj wystarczającą siłę na osi x, tak aby postać stała na platformie. Jednocześnie w jakiś sposób zsynchronizuj to z animacjami wspinania.

    Uwagi : ruch jest tutaj łatwy i może być nawet kontrolowany przez pryzmatyczny przesuwny przegub, ale nie jestem pewien, jak utrzymałbym animacje (kręgosłup) w synchronizacji z ruchem.

  2. Animacja ruchu głównego, która steruje położeniem korzenia postaci. Po ukończeniu teleportuj sztywne ciało i miej nadzieję, że box2d nadal będzie w stanie odpowiednio zareagować na każde zderzenie, jeśli jakieś obiekty spadną z nieba.

    Uwagi : wydaje się, że animacja jest łatwiejsza, ale nie jestem pewien, czy napotkam jakiekolwiek problemy ze środowiskiem uruchomieniowym kręgosłupa, box2d lub nowszym w dół na platformach ruchomych i platformach o różnej wysokości.

  3. Zastosuj wiązanie IK programowo na dłoniach, aby zablokować je w miejscu i przystąp do ręcznego obracania kości lub zastosuj małe wstępnie ustawione animacje (kilka klawiszy / ramek), jednocześnie przykładając wymaganą siłę do sztywnego ciała jednocześnie.

    Uwagi : wydaje się, że dałoby to maksymalną kontrolę graczowi, ale wydaje mi się to skomplikowane do wdrożenia na moim poziomie, nie do końca pewny, od czego zacząć.

Z góry dziękuję za wszelkie uwagi!

FYI: Jest to silnik oparty na ECS (libgdx + ashley) z box2d. Chwytak półki jest już zaimplementowany jako osobny system, więc możemy założyć, że postać może już zwisać z półki o dowolnej wysokości.

Adrian
źródło

Odpowiedzi:

1

wierzę, że potrzebujesz tutaj więcej opcji projektowania, zanim będziesz mógł podjąć właściwą decyzję, a konkretnie, co może się stać z postacią, gdy ten wisi / wspina się?

skoro powiedziałeś, że gra jest oparta na fizyce, zakładam, że możesz mieć kamień spadający na głowę podczas wieszania lub wspinania się, więc jeśli tak jest, uważam, że wybranie rootmotion może być najprostszym rozwiązaniem, wystarczy animować wspinaczkę , podczas wspinania jest w nieco innym stanie zawieszenia, jedyną różnicą jest to, że nie można zainicjować akcji wspinania.

Zakłada się, że masz pod kontrolą całą sytuację zawieszenia, co oznacza, że ​​jeśli podczas zawieszenia i jakiejkolwiek interakcji nastąpi, postać zareaguje prawidłowo.

Następnie wszystko, co musisz zrobić, to przywrócić stan swojej postaci do bezczynności po zakończeniu animacji wspinania.

Brian H.
źródło
0

możesz po prostu przesunąć transformację. w górę n razy, aż stopy znajdą się na półce i tymczasowo zapomnieć o fizyce, myślę, że zadziała dobrze, zawsze możesz zmierzyć odległość między spadającymi przedmiotami a odtwarzaczem na wypadek kolizji podczas awarii tłumaczenie transformacji. aby upewnić się, że nastąpi kolizja ...

Joe Shmoe
źródło
0

Jeśli gracz zostanie przyciśnięty do obiektu, po którym można się wspinać, pozwól w górę / w dół przesunąć go na osi Y. Podczas tego stanu upewnij się, że nie może poruszać się na osi X. Gdy się poruszasz, możesz wywołać animację. Próbuj animacji wspinania, aby upewnić się, że punkt w animacji odpowiada przebytej odległości, zamiast próbować zmierzyć czas.

Peter Morris
źródło
0

Moim zdaniem „najlepszym” sposobem byłoby: Kiedy wykryjesz, że wspinaczka jest możliwa, tymczasowo zablokuj pozycję gracza. Użyj animacji z ruchem roota i zablokuj elementy sterujące. Po zakończeniu animacji odblokuj pozycję graczy i elementy sterujące.

Oczywiście, jeśli zrobisz to lekkomyślnie, będzie to wyglądać dziwnie LUB będzie wymagało doskonałej precyzji pikseli. Ale możesz tego uniknąć - daj graczowi pewien zasięg, na który może się wspinać, a za pomocą lerp szybko dostosuj pozycję do idealnego miejsca.

LIkriT
źródło
0

Czy gracz może swobodnie poruszać się w poziomie, gdy są w powietrzu (kontrola powietrza)? Jeśli tak, po prostu zastosuję odpowiednią siłę pionową, aby stopy gracza znalazły się nad platformą i pozwoliły graczowi poruszać się poziomo na platformie.

Dałoby to graczowi większą kontrolę nad postacią i otworzyłoby więcej opcji ruchu - na przykład, jeśli gracz (wisząc na półce) chciał skoczyć, strzelić w coś na platformie, a następnie spaść i ponownie złapać występ, podczas gdy pocisk podróżował do celu, aby uniknąć wszelkich pocisków, które cel wystrzelił z powrotem w gracza. Taka taktyka może stanowić ciekawą strategię walki z bossem.

Agent Tatsu
źródło