Programowanie gier dla Androida

Programowanie gier dla Androida 32: Box 2D i 2D Scene Part 2

42 filmy

238 minuty

Zapamiętaj: my ustanowił PlayerEntity aktorem. Musimy teraz zwrócić się do kilku rzeczy. Po pierwsze, należy zwrócić go. Powiedziałem mieliśmy problem tutaj bo Box2D i Scene2D pracować z różnymi wymiarami. Box2D pracuje w metrach, a Scene2D w pikselach. Ja opiszę z rysunkiem. Mamy mały ekran. Kiedy rozmawialiśmy o Scene2D Mówiłem ci, że ekran powinien mieć wysokość w pikselach. Na przykład, 360.

Nie mogę sobie przypomnieć, jak usunąć Skitch. Powiem 360 pikseli wysokości. A potem, kiedy rozmawialiśmy o Box2D powiedziałem, że wysokość powinna być w metrach, Na przykład, ekran 4 metrów. Więc jeśli rysuję pudełko 1 metr x 1 metr trzeba zobaczyć ... jak to jest super, ale wyobrazić sobie, że zajmuje jeden metr. Problem polega na tym, że powinno to być na tyle wysokie, że jest to 360 pikseli. Ekran powinien mierzyć zarówno 4 metrów i 360 pikseli.

Jedynym sposobem na to jest poprzez 4 m = 360 pikseli, dzięki czemu jest równoważność. Co zmusza nas do stworzenia konwersji pomiędzy metrów i pikseli. To jest łatwe i jest rozwiązany przez podział: W przypadku 4 metry wynosi 360 pikseli, 1 metr będzie ... x pikseli. 360/4 = 90 więc stosunek do ustalenia, To, że jeden metr wynosi 90 pikseli. Musimy wiedzieć o tym, ponieważ musimy przekształcić metrów Box2D pikseli Scene2D, żeby go wyciągnąć.

Pamiętaj, że nie można utworzyć ciała 90 x 90, bo to byłoby tak duże obiekty, które nie przestrzegają zasad naturalne, że ustalenia. Ale jednocześnie nie możemy wielkości gracze jeden piksel, ponieważ my nie, więc skorzystać z tej równoważności przekonwertować z metrów na piksele, lub pikseli metrów. Aby utworzyć mój relacja równoważności, tworzę klasę o nazwie Stałe, gdzie mogę utworzyć zmienną o nazwie PIXELS_IN_METER,

aby wskazać, że istnieje jeden metr 90 pikseli. A teraz, gdy trzeba ustawić lub zmienić rozmiar aktora, muszę zmienić licznika box2d przez tę stałą do przekazania do pikseli. Na przykład, będę przechodzić rozmiar na aktora. Jeśli pole jest 1 metr, to jest oczywiste, że jego rozmiar w pikselach będzie to 1 * Constants.PIXELS_IN_METER. Można umieścić ten * 1, ale nie wydaje się konieczne. W rzeczywistości mam zamiar zrobić statyczny import aby skorzystać z tej stałej.

Teraz pole wynosi 90 x 90 pikseli. Jak, kiedy idziemy do rysowania na ekranie teksturę, musimy zaktualizować pozycję więc wiemy, gdzie Należy wyciągnąć z tego momentu ciała. Tutaj jest taka sama. Muszę powiedzieć, że jego pozycja będzie body.getPosition (). X, Y body.getPosition (). Y. nie, bo mnoży się przez współczynnik konwersji, aby przekazać je do pikseli, który jest tym, co nas interesuje. A teraz mamy wszystko,

rzeczywiście możemy rysować na ekranie, z tradycyjną metodą losowania. Zróbmy jeszcze jedną metodę, ponieważ jesteśmy zobowiązani do wyeliminowania Fixture A ciało, bo stworzyliśmy, ale należy pamiętać, że musi być wyeliminowane. Dołożymy metody nazywanej odłączyć, aby wskazać, że jesteśmy odłączania obiekt na świecie. A metoda ta będzie dotyczyć zarówno zniszczyć urządzenie jako zniszczenie ciała. Ważne jest, aby nazwać czas na koniec gry

zniknąć. Teraz to, co mogę zrobić, to stworzyć PlayerEntity, oznacz ją ... zobaczymy, co mogę umieścić tam, cicho. I dodać go do stołu montażowego ... coś robię na pokaz () W rzeczywistości, aby zawsze. W hide () Mam oddokowanie świat. Apeluję również do usunięcia (), aby usunąć aktor teatralny. I to wszystko. Co pozostaje do zrobienia? Spędź świata, teksturę i początkową pozycję, będzie to, bo chcę, X 1 metra i 2 metry pozycję w pozycji Y

Ciągle tylko za fakturę ... Jak mogę załadować tekstur? Istnieją proste sposoby, aby załadować tekstury jak widzieliśmy, z budowniczego. Ale to jest mało użyteczna, ponieważ za każdym razem, kiedy załadować tekstury chcę instancję. Czy nie ma lepszego sposobu, aby to zrobić? Tak jest. Możemy użyć AssetManagers scentralizować obciążenie zasobów.

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.