Programowanie gier dla Androida

Programowanie gier dla Androida 28: Kontrola kolizji

42 filmy

238 minuty

W celu realizacji tych kolizji, możemy box2d co jest znane jako Kontakty. Za każdym razem, istnieje kolizja lub dwa uchwyty jakoś zderzają lub spróbuj zajmują ten sam obszar przestrzeni, kontakt występuje i może być powiadomiony o tym. W tym świecie przynosi metody nazywanej setContactListener, z którym możemy skojarzyć ContactListener naszym świecie, który jest skojarzony słuchacza usłyszeć, gdy występują te kontakty.

Więc jestem po prostu zamiar zrobić setContactListener (nowa ContactListener ()), aby zdefiniować jeden szybki, choć można to zrobić w lepszy sposób. Jak widać, ContactListener realizuje kilka metod. Możemy użyć beginContact wykryć, kiedy zaczęliśmy kolizji i endContact wykryć, kiedy skończyliśmy kolizji. preSolve i postSolve uruchamiane podczas kontaktu fizycznego przetwarzane iw ten sposób może

zrobić za pomocą specjalnych parametrów fizycznych, ale w naszym przypadku nie będziemy jeszcze korzystać. Weźmiemy tylko BeginContact i EndContact. Za każdym razem gracz jakoś kolidować z gleby, będzie produkować kontakt pomiędzy dwoma Lampy, który można uzyskać dostęp poprzez getFixtureB styku getFixtureA i metod. To gdzie są problemy, bo nie możemy wiedzieć, gdzie początkowo ciała,

Jeżeli urządzenie uchwyt A lub B, więc wszystko, co robimy tutaj, a wszystkie decyzje, które podejmujemy, aby wykryć, kiedy ciało spadnie na ziemię, musimy rozważyć, czy organem == A, B == gruntowy, jak wtedy, gdy gleba == B == ciała, więc musimy napisać to samo dwa razy. To nie jest tak czysty, jak to może być. Na przykład, można uzyskać za pomocą uchwytu kontaktowego contact.getFixtureA A (B) oraz urządzenie za pomocą contact.getFixtureB ().

A teraz może wykryć, czy mój Oprawa odpowiada Ciała czy nie. I to jest, gdzie problemy są, bo ... jak to zrobić? Początkowo wiem tylko samo urządzenie. Co musimy zrobić, to określić, na przykład, jeśli fixtureA jest taka sama zmienna minijoeFixture i fixtureB taka sama jak sueloFixture, chociaż pokażę w jaki sposób możemy to zrobić w inny sposób przez UserDatas. Na razie, jeżeli urządzenie

To jest Minijoe i Spotkań B jest gleba, może poprosić nasze ciało do skoku. Można by pomyśleć, że to łatwe, nazywając skok. Pomyślałem też, że tak będzie, ale tak nie jest. Nie można zrobić szybki start w ContactListener, ponieważ skoki wymagają, aby silnik nie pracuje, oraz podczas kontaktu Box2D będą pracować na takie rzeczy to nie będzie działać. Zamiast tego, co mamy zrobić, to poprosić w jednym punkcie box2d

który jest wolny, skakać. A to przekłada się zapamiętać w naszej grze będzie szybki start. A to oznacza, że ​​w zasadzie mogę stworzyć logiczną zmienną, która ma wartość haColisionado. Mogę tu, gdy występuje kolizja prawdziwą wartość. I tak jak powiedziałem wcześniej, bo potrzebują zarówno mój osprzętu A i B Oprawa jest związany z ciałem lub innego, muszę to zrobić dwa razy. Na przykład, jeżeli gleba jest fixtureA

zamiast być Joe, muszę zrobić to samo. HaColisionado wartość true. A kiedy jesteśmy z naszych kolizji Manager może już dokonać, jeśli graliśmy lub kolizji, skaczemy, a następnie należy również umieścić haColisionado false aby uniknąć że z jakiegoś powodu może przeskoczyć kilka razy. Tak więc teraz za każdym razem występuje kolizja, przeskoczy ponownie. Jak mówię, nie można dokonać skoki w tych samych zderzeń kierownik,

bo robisz podczas pracy. Więc nie ma wyboru, ale aby umieścić flagę, aby to zrobić później w przypadku na przykład haColisionado. Często jest to zrobić z innymi podmiotami, jak to może być poważny podmiot jako BodyEntity lub PlayerEntity, o właściwościach podobnych do estaSaltando, debeSaltar, enElAire, być bardziej elastyczne sterowanie. W moim przypadku jak to jest tak wygodny dostęp do wszystkich zmiennych wciąż nie robię,

ale mieć pewność, że gdy Scene2D włączyć ten ekran będziemy poruszać, aby odkurzacz, oczywiście.

Aby znaleźć nowe kursy, zapisz. Nie będzie spam, obiecał :)

o autorze

foto de jotajotavm
José Javier Villena

Biografia: Analityk-Programmer w różnych językach. Platformy Opiekun PREMIUM rozpoznawane na całym świecie jako CodigoFacilito. Artykuły Edytor Cristalab. Mój kanał YouTube jest sponsorowany przez wydawcę Anaya LaTostadora. Lubię szczegółowo wyjaśnić i podać kilka przykładów dla uniknięcia wątpliwości.