Wykonywanie postaci poruszającej się po zakrzywionym zboczu w świecie z grawitacją

10

Widziałem tę grę

Fantazyjne spodnie 2 . Zauważyłem, oprócz fizyki i pięknych animacji, to, że postać porusza się po zboczach, a nawet po zakrzywionych zboczach. Mam niewielkie doświadczenie w Box2d, ale ta koncepcja zakrzywionych stoków jest dla mnie nowa. Byłoby to dla mnie bardzo pomocne, gdyby ktoś mnie oświecił na temat tej koncepcji i jej realizacji. Nawet jeśli implementacja nie znajduje się w box2d, jest mile widziana.

Wisznu
źródło
2
Metanet, faceci, którzy zrobili N (który jest we Flashu), mają samouczek na temat tego, jak robili kolizje, który obejmuje sposób obliczania krzywych: metanetsoftware.com/technique/tutorialA.html
CodexArcanum

Odpowiedzi:

5

Jak uzyskać krzywe w Box2D?

W niewydanej wersji Box2D istnieją dwa nowe typy kształtów, b2LoopShape i b2EdgeShape , które pozwalają budować krzywe z sekwencji segmentów linii.

W wydanej wersji można użyć wielu małych skrzynek ustawionych pod kątem, aby uzyskać podobny efekt, ale ciała mają tendencję do robienia niestabilnych i nieoczekiwanych rzeczy w pobliżu punktów połączenia. Dlatego polecam korzystanie z niepublikowanej wersji.

Jak postać może spaść z krzywej?

Niech postać będzie kołem! Moje pytanie na temat fizyki platformówek ma trochę dyskusji na ten temat , ale podstawową ideą jest zamontowanie ciała postaci na obracającym się kole i poruszanie się poprzez zastosowanie siły obrotowej na kole. Mimo że (a właściwie dlatego, że) koło ma tarcie, siła grawitacji skierowana w dół spowoduje, że obróci się ono w dół zbocza - jak prawdziwe koło. Zmieniając parametry silnika przegubu obrotowego , możesz sprawić, aby stawiał opór obrotowi tak bardzo, jak to konieczne, aby uniknąć staczania się po małych pochyłościach.

Społeczność
źródło
Zgadzam się z tobą, korzystając z b2LoopShape, mogłem stworzyć nachylenie zgodnie z moim pragnieniem. Ale po kliknięciu zamieszczonego linku; Problem polega na tym, że nie prowadzi to do portu flash box2d tylko do wersji c ++. 1.) Czy masz na to jakieś sugestie? lub 2.) Czy znasz inny silnik fizyki do flashowania, który pozwala na tworzenie zakrzywionych stoków?
Wisznu,
Nie sądzę, aby port Flash Box2D był na bieżąco z nowymi typami połączeń / kształtów. Nie mam pojęcia, jakie silniki fizyki są dostępne dla Flasha oprócz Box2D.
@ Joe: Jeśli zapytam cię, czy wykonalne byłoby napisanie klasy AS dla b2LoopShape? Tak, żebym mógł włączyć ją do interfejsu Box2d Flash. Gdzie musiałbym zacząć zmierzać? Jakieś wskazówki?
Wisznu,
1

Fantazyjne spodnie zostały stworzone we Flashu, a Flash ma specjalną metodę o nazwie „hitTest”, która pozwala przetestować piksel (w tym przypadku prawdopodobnie wykonuje 2-3 trafienia na piksel wzdłuż postaci fantazyjnych spodni) względem tego, co jest rysowane w wyznaczonym obiekcie ruchomym. Sprawienie, by było to właściwe, może być nieco trudne, ale ta wbudowana funkcja sprawia, że ​​tak wiele gier Flash ma kolizje z zakrzywionymi zboczami. Proces ten jest znacznie bardziej skomplikowany w przypadku większości innych silników i zwykle musi być wykonywany ręcznie, ale istnieje kilka różnych metod.

Metodą, którą najbardziej znam, jest to, że twój silnik jest oparty na kafelkach (pomyśl Sonic the Hedgehog), kafelki oznaczone jako zakrzywione mogą mieć formułę określającą pozycję kolizji „Y” na podstawie aktualnej pozycji „X” postaci na tej płytce. Musisz określić formułę na podstawie tego, jak strome zbocze i jak zakręty szukasz. Możesz użyć kalkulatora graficznego lub programu graficznego do eksperymentowania z formułami. W ten sposób możesz mieć wiele płytek z różnymi krzywymi i formułami.

Brian Cable
źródło
Sonic nie ma wzoru krzywej dla płytek. Używa mapy wysokości 2d dla każdego piksela.
AttackingHobo
@AttackingHobo: Czy możesz mi powiedzieć, co to jest mapa 2-wysokości dla każdego piksela, czy możesz wskazać mi miejsce, w którym mogę jej użyć w moich grach flash?
Wisznu,
2
info.sonicretro.org/Sonic_Physics_Guide Spójrz na to. Nie wiem, czy to ci pomoże, jeśli użyjesz pola 2d. Być może będziesz musiał uruchomić własny silnik fizyki.
AttackingHobo
@Atacking Hobo: Czy jest jakaś zaleta lub możliwość w „wykonywaniu” zakrzywionych stoków Jeśli spróbuję stworzyć klasę AS 3.0, która pozwala na zapętlanie interfejsu API box2d?
Wisznu,