Programowanie gier dla Androida

Programowanie gier dla Androida 19: wykrywanie kolizji

42 filmy

238 minuty

Porozmawiajmy o kolizji, bo oczywiście zainteresowany, aby wiedzieć, że mój odtwarzacz został uderzony przez jednego z kolcami. Pierwszą rzeczą, jaką mogę zrobić, to szukać na Jedna rzecz, która ma klasę Stage, aby uzyskać granice obiektów oraz tryb debugowania. Pokażę, jak wejść w tryb debugowania zobacz szczegółowo aktorów mamy na scenie, a zrozumiesz dlaczego. Najpierw zadzwoń setDebugAll metodę, aby wskazać, że gdy prowadzimy

wykazują krawędzi przedmiotów. Jeśli mijamy prawda, krawędź każdego obiektu w linii, które graniczą aktora więc wiemy pojawi limity. Trzeba pracować, aby dać aktorom kilku rozmiarach, a nie zrobiliśmy, dałem tylko pozycje. Pierwsza rzecz, którą trzeba zrobić, to dać wymiary aktora. I można to zrobić bezpośrednio od producenta, ponieważ tekstury i TextureRegions mają metody

szerokość i wysokość faktury, i to jest dla mnie idealna, aby powiedzieć mi aktora, 'Hej, nowy rozmiar (z setSize) jest pinchos.getRegionWidth () . Dla szerokości regionu i pinchos.getRegionHeight () w celu uzyskania wysokiej 'W ten sposób wiemy, jak wysoki z ActorPinchos: które mierzą tekstury. Z ActorJugador jest taka sama. To, co znasz, bo zrobił to w ciągu pierwszych filmów: getWidth () i getHeight ().

To w połączeniu z tym inna, ponieważ musimy jej wymiary, to pozwala nam bezpośrednio uzyskać ten zielony krawędź będzie teraz zobaczyć wokół nasza postać. Z tego mniej więcej, co możemy zrobić, to określić, jakie są granice, a pomoże nam w jaki sposób możemy dokonać wykrycia gdy występuje kolizja. Wrócę do mojego Skitch zrozumieć, jak uda mi kolizji. Są lepsze sposoby zarządzania nimi, a wkrótce

Zobaczmy, jak możemy rozpocząć wprowadzanie box2d, bardzo ciekawą technologię, która pozwoli nam dodać realistyczną fizykę w grze, i jak lepiej wykrywania kolizji uzyskuje. Na razie będziemy uczyć się, jak uzyskać prosty algorytm, aby otworzyć usta na później. W tym momencie możemy zmniejszyć nasze aktora do kwadratu. Wszystkie podmioty, w rzeczywistości. Mamy zawodnika i mają szpikulca.

Co interesuje nas to, aby wykryć, kiedy to nastąpiło: czyli gdy kolce starli się z aktorem. Najwyraźniej nie jest to prosty sposób, aby zobaczyć kiedy uderzył; a tu mamy tę pionową linię, która będzie odpowiedni do pozycji X odtwarzacza. Kiedy mówimy setX () go wskazujemy, gdzie robi się tę linię, ponieważ pochodzenie współrzędnych zaznaczono po lewej stronie. Wiemy, co szeroka jest aktorem,

tak to jest łatwe do ustalenia prawą krawędź podejmowania suma x + szerokość. Podobnie, możemy uzyskać lewą krawędź naszych szaszłyków używając X w przypadku szaszłyków. W przypadku wystąpienia kolizji, ciekawa rzecz dzieje: występują kolizje z powodu lewej krawędzi Nasze ActorPinchos jest bardziej na lewo, czyli X o wartości mniejszej niż wartość X + Szerokość kolcami. Jeśli mamy dokonać porównania między pinchos.x

oraz (jugador.x + jugador.width), co się dzieje, jest to, że nie ma kolizji, ponieważ ta pierwsza jest mniejsza niż sekundę. Jeśli ten warunek jest spełniony, istnieje kolizja, ponieważ kolce są dosłownie wewnątrz odtwarzacza. Jest to pierwszy strategię wykrywania kolizji. Stosując metodę renderowania przed wywołaniem draw () wezwanie metoda zwana comprobarColisiones (), które tworzą teraz. Istnieje pewna rozbieżność w stosunku

kiedy do aktualizacji i wyciągnąć. Nie daj się nabrać: zawsze Actualizad przed wyciągnięciem. Bo jeśli nie, jeśli robisz to w drugą stronę, to znaczy, meteis draw () po pierwsze, masz problem, ponieważ kolizje będą sprawdzane po dokonaniu czynu (), a akt () nie będzie gracz ogląda. W losowaniu () zostało zrobione wcześniej gracz nie dostrzec. A w grach, które mają dużo ruchu jest to problem,

więc najpierw zrobi aktualizacje i kontrole i wreszcie, gdy wszystko jest już gotowe dibujadlo. Zwłaszcza z Box2D, to jest bardzo ważne. Ostatnią rzeczą, jaką zrobię to napisać comprobarColisiones () metoda, aby sprawdzić, co powiedziałem. Jeśli prawy brzeg moim odtwarzaczu jest większa niż lewa krawędź moich kolców, dlatego doszło do kolizji. Dobry czas, aby zabić gracza, w zasadzie. Le mogę postawić warunek

to jest żywy, a przez getter i setter mogę zmienić lub sprawdzić, czy mój odtwarzacz jest żywy, czy nie. Teraz to, co robię, w końcu jest to, że jeśli gracz jest żywy a on wpadł, zderzenie wydrukowany. Chcę to zrobić, bo jeśli nie, to zderzenie wiadomość podczas ruchu kolce są następnie pojawi się dziesiątki razy. Aby zakończyć będąc dobrze jest setAlive składa fałszywe nie kolejny prawdziwej wartości. Pozwoli to uniknąć drukowania

często zderzenie komunikat. Jest to nieco surowy i brudny sposób, ale umożliwia sprawdzenie za pomocą modelu matematycznego ... - dobry. Ja rozumiem, dlaczego to nie działa. Może dlatego, że zapomniał umieścić to. Tak prawda. Wybaczcie ten szczegół: podczas uruchamiania gry, początek na żywo. Tak teraz. Powiedział, że do podstawowych modeli geometrycznych, takich jak prostokąty widzimy, gdy doszło do kolizji. Ta technika nazywa się obwiednie.

Nie jest to najlepsza technologia do sprawdzenia kolizji, ale podstawowe gier 2D. Jednak z Box2D mamy lepszy system integracji fizycznej.

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.