Giochi di programmazione per Android

Giochi di programmazione per Android 32: Box 2D e scene 2D Parte 2

42 Video

238 minuti

Ricordate: avevamo stabilito un PlayerEntity un attore. Ora dobbiamo rivolgersi a diverse cose. In primo luogo, si disegna. Ho detto che abbiamo avuto un problema qui, perché Box2D e Scene2D lavorano con diverse dimensioni. Box2D lavora in metri, e Scene2D in pixel. Mi spiegherò con un disegno. Noi abbiamo il nostro piccolo schermo. Quando abbiamo parlato di Scene2D ti ho detto che lo schermo dovrebbe avere una altezza in pixel. Ad esempio, 360.

Non riesco a ricordare come cancellare Skitch. Dirò 360 pixel di altezza. E poi, quando abbiamo parlato di Box2D ho detto che l'altezza dovrebbe essere in metri, per esempio, lo schermo di 4 metri. Quindi, se ho disegnare una casella di 1 metro x 1 metro deve vedere ... come questo è grande, ma immaginare che occupa un metro. Il problema è che questo dovrebbe essere abbastanza alto per questo di essere 360 ​​pixel. Lo schermo dovrebbe misurare entrambi i 4 metri e 360 ​​pixel.

L'unico modo per farlo è facendo 4 metri = 360 pixel, in modo che sia una equivalenza. Ciò che ci spinge a stabilire una conversione tra metri e pixel. Questo è facile ed è risolto da una divisione: se 4 metri è 360 pixel 1 metro sarà ... X pixel. 360/4 = 90 Quindi, il rapporto di stabilire, E 'che 1 metro è di 90 pixel. Abbiamo bisogno di sapere perché dobbiamo convertire metri al Box2D pixel Scene2D, a disegnarlo.

Ricordate non possiamo creare corpi di 90 x 90, perché sarebbe così oggetti di grandi dimensioni che non rispettino le regole della natura che stabiliamo. Ma mentre non possiamo fare il formato giocatori 1 pixel, perché non saremmo, quindi usiamo questa equivalenza convertire da metri a pixel, o pixel a metri. Per creare la mia relazione di equivalenza, creo una classe denominata Costanti, dove creo una variabile chiamata PIXELS_IN_METER,

per indicare che c'è un metro di 90 pixel. E ora, ogni volta che è necessario posizionare o ridimensionare l'attore, devo cambiare il contatore leggere Box2d da questa costante per passare al pixel. Per esempio, io passerò la dimensione di attore. Se la casella è di 1 metro, è evidente che la sua dimensione in pixel sarà 1 * Constants.PIXELS_IN_METER. Si potrebbe mettere che * 1, ma non sembra necessario. In realtà ho intenzione di fare una importazione statico per utilizzare questa costante.

Ora la scatola è di 90 x 90 pixel. Come, quando andiamo a disegnare sullo schermo la nostra texture, abbiamo bisogno di aggiornare la posizione in modo sappiamo dove Esso è predisposto da questo momento il corpo. Qui è lo stesso. Devo dire che la sua posizione sarà body.getPosition (). X, Y body.getPosition (). Y. non lo fanno, perché abbiamo moltiplicato per il fattore di conversione per passarlo a pixel, che è quello che ci interessa. E ora abbiamo tutto,

possiamo effettivamente disegnare sullo schermo, con il metodo draw tradizionale. Facciamo un ultimo metodo, come ci viene richiesto di eliminare la Fixture e il corpo, perché abbiamo creato ma ricordate che deve essere eliminato. Faremo un metodo chiamato distacco, per indicare che stiamo disimpegnando l'oggetto nel mondo. E questo metodo si occuperà sia di distruggere Apparecchio per distruggere il corpo. E 'importante che noi chiamiamo vita alla fine del gioco,

scomparire. Ora quello che faccio è creare un PlayerEntity, un'istanza ... vedremo quello che ho messo lì, tranquillo. Aggiungo allo stage ... qualcosa che faccio nello show (), infatti, a fare sempre. Nella pelle () devo sganciare il mondo. Invito anche rimuovere () per rimuovere l'attore di teatro. E questo è tutto. Che cosa resta da fare? Trascorrere un mondo, una struttura e una posizione iniziale, sarà perché voglio grado di, X 1 metro e 2 metri in posizione Y

Ho ancora pagare solo la consistenza ... come posso caricare le texture? Ci sono semplici modi per caricare le texture, come abbiamo visto, con il costruttore. Ma non è affatto utilizzabile perché ogni volta che caricare una texture che voglio creare un'istanza. Non c'è un modo migliore per fare questo? Si C'è. Possiamo usare AssetManagers per centralizzare il carico delle risorse.

Per trovare nuovi corsi, iscriviti. Non ci sarà lo spam, promesso :)

Circa l'autore

foto de jotajotavm
José Javier Villena

Biografia: Analista Programmatore-in diverse lingue. piattaforme Tutor PREMIUM riconosciuti a livello mondiale come CodigoFacilito. articoli Editor Cristalab. Il mio canale YouTube è sponsorizzato dalla casa editrice ANAYA e LaTostadora. Mi piace spiegare in dettaglio e dare alcuni esempi per evitare ogni dubbio.