Giochi di programmazione per Android

Giochi di programmazione per Android 28: Controllo collisioni

42 Video

238 minuti

Per implementare queste collisioni, abbiamo Box2D ciò che è noto come Contatti. Ogni volta che c'è una collisione o due apparecchi in qualche modo si scontrano o cercare di occupare la stessa regione di spazio, il contatto avviene e può essere notificata di esso. Per questo mondo porta un metodo chiamato setContactListener, con cui possiamo associare un ContactListener nostro mondo, che è associato ascoltatore di sentire quando si verificano questi contatti.

Così Sto solo andando a fare un setContactListener (nuova ContactListener ()) per definire una veloce, anche se questo può essere fatto in un modo migliore. Come si può vedere, ContactListener implementa diversi metodi. Possiamo usare beginContact per rilevare quando abbiamo iniziato una collisione, e endContact di rilevare quando abbiamo finito una collisione. preSolve e postSolve eseguire quando il contatto fisico in fase di elaborazione e quindi in grado

facciamo fisico utilizzando parametri speciali, ma nel nostro caso non è ancora usare. Ci vorranno solo BeginContact e EndContact. Ogni volta che il giocatore in qualche modo contrasta con il suolo, esso produrrà un contatto tra due apparecchi, cui è possibile accedere da getFixtureB del contatto getFixtureA e metodi. Questo è dove i problemi vengono perché non possiamo sapere dove inizialmente il corpo,

se l'apparecchio A o B apparecchio, quindi tutto ciò che facciamo qui, e tutte le decisioni che prendiamo per rilevare quando il corpo colpisce il suolo, dobbiamo considerare se l'organo == A, B == terra, come quando un terreno ==, B == corpo, così dobbiamo scrivere la stessa cosa due volte. Non è così pulito come potrebbe essere. Ad esempio, posso avere l'apparecchio contatto utilizzando contact.getFixtureA A () e apparecchio B usando contact.getFixtureB ().

E ora posso rilevare se il mio apparecchio corrisponde al corpo o no. E questo è dove i problemi vengono perché ... come posso fare? Inizialmente So solo Fixture stessa. Quello che dobbiamo fare è determinare, per esempio, se fixtureA è la stessa variabile che minijoeFixture e fixtureB lo stesso sueloFixture, anche se vi mostrerò come possiamo farlo in altri modi di UserDatas. Per ora, se il fissaggio A

E 'a Minijoe, e Fixture B è il terreno, può chiedere al nostro corpo per saltare. Si potrebbe pensare che sia facile, chiamando salto. Ho anche pensato che sarebbe stato così, ma non è così. Non si può fare un inizio di salto all'interno di un ContactListener, perché salta richiedono che il motore non è in funzione, e durante un contatto Box2D dovrà lavorare su cose come questo non funzionerà. Invece, ciò che facciamo è chiedere ad un certo punto Box2d

che è gratuito, saltare. E questo si traduce da ricordare nel nostro gioco per essere un inizio di salto. E questo significa che fondamentalmente io creare una variabile booleana che ha il valore haColisionado. Posso qui quando si verifica una collisione vero valore. E come ho detto prima, perché ho bisogno sia il mio apparecchio A e B dispositivo è associato a un corpo o di un altro, devo farlo due volte. Ad esempio, se il terreno è fixtureA

invece di essere il Joe, devo fare lo stesso. HaColisionado impostata su true. E una volta che siamo fuori il nostro manager collisioni posso già fare, se abbiamo giocato o ha in collisione, saltiamo, e quindi anche di essere messo haColisionado a false per evitare che per qualche motivo può saltare più volte. Così, ora ogni volta che si verifica una collisione, salterà di nuovo. Come ho detto, non è possibile effettuare salti all'interno delle stesse collisioni gestore,

perché si fa quando si sta lavorando. Quindi non resta che mettere un flag per farlo successivamente in caso per esempio di haColisionado. Questo spesso è fatto con le entità, come potrebbe essere un grave entità come BodyEntity o PlayerEntity, con immobili come estaSaltando, debeSaltar, enElAire, di essere più flessibile per controllare. Nel mio caso come questo è così conveniente per accedere a tutte le variabili ancora non sto facendo,

ma vi assicuriamo che quando Scene2D incorporano questa schermata, ci muoveremo per renderlo più pulito, ovviamente.

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.