Come determinare se il personaggio è caduto nel vuoto in un corridore / saltatore infinito?


12

Sto costruendo un corridore infinito 2D. Nel gioco, i salti di personaggio da un pilastro all'altro, vengono generati casualmente. Ho questo lavoro. Ma come determinare se il personaggio non è riuscito a saltare su un pilastro ed è caduto nello spazio tra i pilastri? Un pilastro ha una normale forma rettangolare.


OT: Ho pensato che questa domanda fosse stata pubblicata su rpg.SE e ho pensato "Che tipo di exploit delle regole è stato trovato ora? In esecuzione infinita come?"
o0 '.

Risposte:


20

Aggiungi una regione rettangolare nella parte inferiore del livello, inferiore all'altezza minima consentita di una piattaforma. Se il giocatore ha attraversato questa regione, è caduto da una piattaforma.


1
E rendere questo rettangolo un figlio della fotocamera, quindi si muove con la fotocamera ed è sempre presente? È così facile Grazie.
SanSolo,

Anche se il giocatore non dovrebbe essere in grado di superare il livello, penso che questa sia una buona protezione se in qualche modo riesce a farlo.
mucaho,

5
Se stai letteralmente controllando l'intersezione, assicurati che il tuo personaggio non possa cadere così velocemente da tagliare la superficie (ad esempio, uno dal personaggio è interamente sopra e il frame successivo completamente sotto).
wchargin,

2
Sì, il retto dovrebbe estendersi quanto più in basso necessario per evitarlo. Anche solo il controllo dell'altezza funzionerà, ma questo ti dà la flessibilità di ridimensionare la "kill region" a seconda del livello.
mklingen,

6
Per evitare di "tagliare" il rettangolo, perché non un semplice if (playerPos.x < minHeight)?
Cole Johnson,

24

Se il tuo gioco scorre solo in orizzontale, puoi verificare se la posizione verticale del personaggio è sotto il bordo inferiore del palco.

Se il tuo gioco scorre anche verticalmente (probabilmente verso l'alto), puoi verificare se il giocatore è caduto sotto il bordo inferiore della vista (ovvero l'area del palco che è sullo schermo o a fuoco della videocamera).

In generale, la condizione di morte è se il personaggio non riesce a rimanere "a porte chiuse". Controllando il movimento della tua fotocamera, sarai in grado di ottimizzare il tuo gameplay. Ad esempio, se in una fase di scorrimento verticale si consente alla videocamera di "elastico" solo un po 'verso il basso, pur consentendo il movimento completo verso l'alto, si penalizzano le cadute profonde, fuori dallo schermo.


Sì, anche questo è un modo semplice. Avrei solo bisogno di scoprire la posizione più bassa. Che personaggio può essere.
SanSolo,

1
Corretta! nel caso di uno scroller orizzontale puoi semplicemente controllare la dimensione verticale dello stage nel tuo editor di mappe. Nel caso di uno scroller verticale, è possibile assicurarsi che la videocamera si sposti solo verso l'alto. In questo modo, se il personaggio cade, finirà sotto la vista della telecamera. Puoi quindi semplicemente controllare se la posizione verticale del personaggio scende al di sotto del limite inferiore della vista.
Jelle van Campen,

@JellevanCampen: non è necessario limitare necessariamente la videocamera al movimento verso l'alto. Puoi uccidere i personaggi che non riescono a rimanere "nella macchina fotografica" o farli seguire dalla videocamera.
Mooing Duck,

Questa risposta non mi piace tanto perché lega la fotocamera direttamente ai limiti di livello. La risposta di mklingen funziona anche se i limiti del livello hanno dimensioni superiori a un'altezza dello schermo. La telecamera può spostarsi su e giù per mettere a fuoco il personaggio, ma non c'è rischio che il personaggio cada più velocemente della telecamera, rimanga nel livello, ma rimanga comunque in collisione con il riquadro di confine attaccato direttamente alla telecamera.
Kevin,

2
@Kevin: sono d'accordo per i giochi generali, ma non per gli scroller infiniti generati proceduralmente. Ad esempio, in uno scroller verticale, dovresti continuare a generare nuove caselle e despartire le caselle fuori schermo, oppure dovresti continuare ad aggiornare le caselle mentre la telecamera si sposta. Poiché la condizione di morte è direttamente legata al "mancato rimanere nella fotocamera", ha senso legare la condizione alla fotocamera. Inoltre, è anche più efficace eseguire un controllo del limite della videocamera, piuttosto che generare nuovi oggetti e ricorrere al controllo delle collisioni.
Jelle van Campen,

2

In alternativa al controllo delle coordinate verticali , puoi semplicemente controllare la velocità verticale. Se il personaggio sta cadendo più veloce di una certa soglia, concludere che sono morti (anche se v'è una certa piattaforma a basso abbastanza per raggiungere ancora, l'impatto sarebbe fatale).

Naturalmente, questo funziona solo se il tuo gioco implementa correttamente la fisica di base della caduta libera, cioè la velocità verso il basso aumenta effettivamente durante la caduta, come nella realtà (fino alla velocità terminale).


1

Se hai l'altezza dei pilastri, puoi trovare il più basso esistente e confrontarlo con la posizione verticale del giocatore. Se è al di sotto del pilastro più basso, non c'è alcuna possibilità che possa tornare. Puoi limitare questo controllo solo ai pilastri dietro e davanti al giocatore.

Esempio: abbiamo 3 pilastri, con altezze [10, 20, 40]. Il giocatore saltato è sul pilastro con altezza 40, salta in avanti a 20. Si è sentito in gap tra 40 e 20, ora è a quota 15. Ciò significa che si è sentito. Per un controllo meno rigoroso, attendere che sia inferiore a 10.


Tutti i pilastri hanno le stesse dimensioni. È il divario orizzontale tra due pilastri che varia :)
SanSolo,

0

Tieni conto di quanto tempo è caduto un personaggio. (ovvero da quanto tempo si stanno muovendo "in basso"). Una volta che sono caduti più di uno schermo di tempo, per definizione sono caduti dal palco, sì?

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.