Come posso prevedere le collisioni giocatore-proiettile in Box2D?


8

Sto realizzando un gioco di tiro in tempo reale con Box2D come motore fisico. Il gameplay riguarda principalmente la traiettoria, come Angry Birds. Voglio fare un effetto al rallentatore e spostare la telecamera sul giocatore quando viene ucciso, ma l'effetto dovrebbe iniziare quando la pietra è ancora in aria, prima che si verifichi effettivamente la collisione.

L'entità del danno viene calcolata solo in caso di collisione, in base all'impulso. Poiché è un gioco in tempo reale, il giocatore deve essere in grado di spostare il corpo fisico del proprio personaggio senza ritardi.

Come posso prevederne la morte? È anche possibile? Potrei raycast, ma cosa succede se un altro oggetto si sposta per bloccarne il percorso?

inserisci qui la descrizione dell'immagine


1
Nota teorica: il futuro dei sistemi non deterministici è per definizione imprevedibile. Osserva il gatto di Schrödinger , sostituendo mentalmente "gatto" con "personaggio giocatore".
Anko,

1
@Anko idea molto interessante! Non l'ho mai provato. Ma il giocatore può ancora muoversi, quindi dove si trova o quanto lontano non è prevedibile. Tuttavia conosco la velocità di movimento del giocatore, quindi quando la pietra è abbastanza vicina, so che non mancherà ...
Arch1tect

1
(1/2) IMO sarebbe molto più interessante se si usasse un raycast per vedere se una collisione ha buone possibilità di verificarsi, quindi avviare lo zoom della videocamera e rallentare il gioco. Per ogni fotogramma, ripetere il cast del raggio per vedere se la pietra è ancora in rotta di collisione. Se la pietra viene intercettata, la fotocamera dovrebbe semplicemente tornare allo stato normale, ma per ogni fotogramma è ancora probabile la collisione, ingrandire la fotocamera un po 'di più.
NauticalMile

1
(2/2) Questo ucciderà due piccioni con una fava (gioco di parole non inteso): non avrai bisogno di "guardare nel futuro", e i giocatori proveranno il brivido dei quasi-miss e anche la diretta (o pascolo) colpi. In effetti, potrei sostenere che i tuoi effetti diventeranno noiosi se il giocatore lo sapesse, ogni volta che la telecamera si ingrandisce e il gioco rallenta, è condannato. Vorrebbe saltare immediatamente l '"animazione" e riprovare. Ma se c'è una possibilità che possa sfuggire alla pietra, puoi scommettere che si morderà le unghie in attesa di vedere il risultato.
NauticalMile

1
(1/2) @NauticalMile hey, anche questa è un'ottima idea !! Temo che non si applichi direttamente al mio gioco perché il giocatore viene colpito troppo spesso, quindi lo zoom e il rallentatore potrebbero interrompere troppo il gioco in corso.
Arch1tect,

Risposte:


2

Perché calcolare la traiettoria per i suoni / effetti di rallentamento?

Se dividi l'atto di rallentare la telecamera e riprodurre effetti in sezioni all'avvicinarsi della tua vittima squishy, ​​puoi essenzialmente riprodurli a condizione della loro vicinanza.

Questo è un grande esempio che mi viene in mente. Gli effetti di rallentamento della prossimità impiegati in Peggle

La palla si avvicina al piolo e inizia a rallentare. Questo in realtà si basa completamente sulla prossimità, nessuna traiettoria coinvolta. Se si avvicina abbastanza all'ultimo piolo, inizia un rullo di tamburi e rallenta il gioco, se non colpisce il piolo e va fuori portata si sente "Awww .. :(" e tutto ritorna alla normalità, ma se si scontra, otterrai l'Overture completo e lo schermo vincente.

Questa è un'ottima tecnica se approvi di far andare il tuo giocatore "Vacca sacra, sono quasi stato colpito!". Se hai un suono / effetto di avvio per una Death Cam che suonerà prima dell'impatto, attivalo semplicemente quando la pietra è abbastanza vicina che anche se il giocatore si è mosso alla massima velocità in qualsiasi direzione - hanno un grande cambio di schiacciamento .

Dì che il tuo rock sta cadendo e vuoi iniziare l'effetto di rallentamento a ~ 4m di distanza dal giocatore: inizi innescando il rallentamento, muovi la fotocamera e inizi a concentrarti sul giocatore - se il rock viene quindi interrotto da altri detriti, allora è sufficiente uscire dalla messa a fuoco al rallentatore e il giocatore continua normalmente.

inserisci qui la descrizione dell'immagine

Questo è essenzialmente il modo in cui Peggle gestisce il loro effetto di rallentamento e innesca la musica di fine gioco ed è perfettamente praticabile per l'uso sulla videocamera / rock / squishy che anticipa lo scenario della scena della morte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.