Mam podstawowy kontroler postaci skonfigurowany dla platformówki 2D z Box2D i zaczynam go poprawiać, aby poczuł się dobrze. Silniki fizyki mają wiele pokręteł do poprawienia i nie jest dla mnie jasne, pisząc z silnikiem fizyki po raz pierwszy, które z nich powinienem użyć. Czy skakanie powinno zastosować siłę dla kilku tyknięć? Impuls? Bezpośrednio ustawiona prędkość? Jak powstrzymać awatar przed przyklejaniem się do ścian bez usuwania całego jego tarcia (lub czy usuwam całe tarcie, ale tylko w powietrzu)? Czy powinienem modelować postać jako kapsułkę? Pudełko z zaokrąglonymi narożnikami? Pudełko z dwoma kołami? Tylko jedno duże koło? Czuję, że ktoś musiał to zrobić wcześniej!
Wydaje się, że w Internecie jest bardzo mało zasobów, które nie są „pierwszą fizyką dziecka”, które zostały odcięte tam, gdzie mam nadzieję, że ktoś już rozwiązał problemy. Większość przykładów silników fizyki platformówek ma kontrolę nad pływaniem, skoki w powietrzu lub łatwe do wykorzystania zachowanie, gdy tymczasowa penetracja jest zbyt wysoka itp.
Kilka przykładów tego, co mam na myśli:
- Krótkie dotknięcie skoku skacze na krótki dystans; długi kran skacze wyżej.
- Krótki poślizg podczas zatrzymywania lub cofania kierunków z dużą prędkością.
- Stanie stabilnie na pochyłościach (ale może zsuwanie się po nich podczas schylania się).
- Prędkość analogowa przy użyciu kontrolera analogowego.
- Wszystkie inne rzeczy, które oddzielają dobre platformówki od złych platformówek.
- Odważę się sugerować, stabilne ruchome platformy?
Nie szukam „hej, zrób to”. Oczywiście właściwa czynność zależy od tego, czego chcę w grze. Ale mam nadzieję, że ktoś gdzieś przejrzał możliwości i powiedział: „dobrze technika A ma X dobrze, technika B dobrze Y, ale to nie działa z C”, lub ma kilka sprawdzonych przykładów poza ”if (key = = spacja) znak. impuls (0, 1) ”
Szczerze mówiąc, nie sądzę, aby użycie silnika fizyki było właściwym podejściem do czegoś w tej dziedzinie o bardzo surowych wymaganiach.
Po prostu napisz to wszystko sam. Osiągniesz znacznie lepsze wyniki, mówiąc „przesuń postać w górę o x jednostek w tym kształcie paraboli, przytrzymując przycisk skoku na długość y”, niż mając kilka pokręteł do poprawienia.
źródło
Napisałem serię artykułów na temat budowania gry platformowej od podstaw przy użyciu nowoczesnych technologii, w tym także o tym, jak poradziłem sobie z prostą fizyką:
http://www.wildbunny.co.uk/blog/2011/12/14/how-to-make-a-2d-platform-game-part-2-collision-detection/
Jeśli jednak potrzebujesz czegoś bardziej zaawansowanego technologicznie, możesz podejść do tego z pełnym silnikiem fizyki. Oto technika, której możesz użyć (z Little Big Planet), dzięki czemu postać gracza jest w pełni zintegrowaną częścią silnika fizyki:
Zamiast przykładać impulsy lub ustawiać prędkości, aby poruszać odtwarzaczem jako „zewnętrznymi wejściami” do silnika fizyki, możesz opracować ograniczenie kontrolujące postać.
Więc to ograniczenie będzie miało żądaną prędkość i kierunek gracza jako dane wejściowe (z gry) i modeluje takie rzeczy, jak maksymalna siła i prędkość gracza. Ograniczenie będzie próbowało poruszyć gracza zgodnie z jego wejściami (i przestrzeganiem maksymalnych wartości), a ponieważ jest to ograniczenie, zastosuje równą i przeciwną siłę na obiekcie, na którym stoi gracz, pozwalając graczowi stać na ruchomych platformach i wpływać na rzeczy, nad którymi się porusza.
Robiąc takie rzeczy, możesz sprawić, że gracz całkowicie naturalnie będzie w stanie poradzić sobie z sytuacjami takimi jak bycie pod ogromną stertą pudeł lub skakanie po kilku ruchomych platformach, ponieważ jest on teraz podstawową częścią silnika fizyki.
Mam nadzieję, że to pomaga!
Na zdrowie, Paul.
źródło
To pytanie było przedmiotem znacznej dyskusji na forach Box2D. Czytając dyskusje o ruchu postaci, skakaniu lub platformówce, natkniesz się na każdy możliwy problem. Jednak problem stał się na tyle skomplikowany, że system filtrowania kolizji został zaktualizowany, a przykład stanowiska testowego został stworzony wyłącznie w celu pokazania, jak należy to zrobić.
źródło