Mam platformówkę 2D, w której gracz zawsze biegnie w prawo, ale teren nie zawsze jest poziomy. Przykład:
Wdrożyłem system kolizji z obwiednią, który sprawdza tylko skrzyżowania ze skrzynką gracza i innymi blokami, aby zatrzymać gracza przed uruchomieniem, jeśli napotkasz duży blok, więc musisz skakać, ale kiedy stawiam schody, chcę, żeby biegnij płynnie, tak jak on jest na poziomym terenie. Z systemem kolizji musisz przeskakiwać schody, aby je minąć!
Myślałem o wygenerowaniu linii między krawędziami schodów i narzuceniu ruchu gracza na tej linii ... Co sądzisz? Czy jest coś mądrzejszego do zrobienia?
Jeśli jesteś w stanie obrócić obwiednię, postawiłbym obrócone o 45 stopni pudełko u stóp gracza i połączyłem je z jednym nieobróconym pudełkiem, aby reprezentować resztę ciała. To może sprawić, że odtwarzacz automatycznie przesunie się po czymkolwiek wystarczająco małym.
Chociaż prawdopodobnie spowodowałoby to pewne przycięcie modelu gracza i schodów.
Innym pomysłem jest umieszczenie jednego obwiedni od głowy postaci do króla o większej szerokości niż pole postaci.
Gdy gracz zderzy się z czymś, czego nie robi pudełko „A”, możesz przenieść go na wierzch, z czym się zderzył
_________________||||||||| A | pla | A ||____| yer |____||| _________________________ <- step |||---------------------------------------------<- ground
Istnieją trzy ogólne podejścia do radzenia sobie ze schodami w grach wideo:
Podejście „Mario” polega na tym, że musisz wskoczyć na schody.
Podejście „Castlevania” polega na tym, że poruszanie się po schodach w górę / w dół jest innym rodzajem ruchu; musisz nacisnąć przycisk „w górę” na kontrolerze i odtworzyć specjalną animację „wchodzenie po schodach”, aby przejść przez schody. Wariantem tego jest podejście „Resident Evil”, w którym poruszanie się w górę / w dół schodów jest traktowane jako kompletna przerywnik filmowy, który jest odtwarzany, gdy gracz naciśnie przycisk interakcji; żadne interaktywne wchodzenie po schodach nie jest dozwolone.
Podejście „Prawie każdy inny” to takie, o którym wspominałeś: traktuj schody jak rampa. W zależności od rodzaju gry możesz ustawić rampę na różnych wysokościach względem schodów. Zazwyczaj w grze 2D sztuczka „schody są w rzeczywistości rampą” jest mniej zauważalna dla gracza, jeśli rampa jest na poziomie z dolnymi narożnikami każdego stopnia schodów, podczas gdy w grze 3D jest zwykle mniej zauważalna, jeśli rampa jest na poziomie z górnymi rogami każdego kroku. (tak jak w grze 2D łatwiej jest zauważyć, czy stopy postaci unoszą się nad ziemią, więc chcesz to zminimalizować, podczas gdy w grze 3D łatwiej jest zauważyć, czy stopy postaci przecinają ziemię, więc chcesz to zminimalizować).
Świetna uwaga na temat zmiennoprzecinkowego / obcinania w różnych graficznych punktach widzenia.
Kroltan
Twoje informacje są dość błędne. Tylko w starych grach Mario musisz skakać, aby wejść po schodach. Ale myślę, że to oczywiste. Ale zło rezydenta zdecydowanie miało również schody, na które można wchodzić interaktywnie!
Tara,
4
Większość metod, które napotkałem, zostało już wymienionych powyżej - ale jest jeszcze jedna, o której nie wspomniano. Kiedy gracz napotka przeszkodę pionową, która jest wystarczająco krótka (powiedzmy, 1/3 wysokości), po prostu połóż ją na górze. Na przykład Minecraft i silnik Source przyjmują takie podejście w takiej sytuacji. Ponadto ta metoda pozwala nadal używać czystego AABB dla całej fizyki, nie narażając gracza na ból związany z ciągłym skakaniem po schodach.
Byłoby miło, gdybyś mógł wyjaśnić, jak wykrywać takie przeszkody.
Tara,
0
Obecnie pracuję nad podobną częścią silnika, a sposób, w jaki radziłem sobie ze schodami / zboczami, polega na zliczaniu przezroczystych pikseli w mojej fakturze rampy i kompensowaniu obiektu gracza o znalezioną ilość.
Większość metod, które napotkałem, zostało już wymienionych powyżej - ale jest jeszcze jedna, o której nie wspomniano. Kiedy gracz napotka przeszkodę pionową, która jest wystarczająco krótka (powiedzmy, 1/3 wysokości), po prostu połóż ją na górze. Na przykład Minecraft i silnik Source przyjmują takie podejście w takiej sytuacji. Ponadto ta metoda pozwala nadal używać czystego AABB dla całej fizyki, nie narażając gracza na ból związany z ciągłym skakaniem po schodach.
źródło
Obecnie pracuję nad podobną częścią silnika, a sposób, w jaki radziłem sobie ze schodami / zboczami, polega na zliczaniu przezroczystych pikseli w mojej fakturze rampy i kompensowaniu obiektu gracza o znalezioną ilość.
Jest podobny do idei mapy wysokości opisanej szczegółowo w tym artykule: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves
Wyobrażam sobie, że tak naprawdę chciałbyś zrobić i możesz wybrać inną animację, która będzie odtwarzana zgodnie z wejściem na schody.
Istnieje również dobry przegląd różnych koncepcji nachylenia w tym artykule: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/
źródło