Fai correre il giocatore sulle scale senza intoppi


11

Ho un gioco con piattaforma 2D, in cui il giocatore corre sempre verso destra, ma il terreno non è sempre orizzontale. Esempio:

Un esempio

Ho implementato un sistema di collisione con delimitatore che controlla solo le intersezioni con la scatola del giocatore e gli altri blocchi, per impedire al giocatore di correre se incontri un grosso blocco, quindi devi saltare, ma quando metto le scale, voglio che lo faccia correre senza intoppi proprio come se fosse sul terreno orizzontale. Con il sistema di collisione devi saltare le scale per superarle!

Ho pensato di generare una linea tra i bordi delle scale e di imporre il movimento del giocatore su quella linea ... Cosa ne pensi? C'è qualcosa di più intelligente da fare?

Come qui

Risposte:


11

Se sei in grado di ruotare le scatole di delimitazione, avrei messo una scatola ruotata di 45 gradi ai piedi del giocatore e combinandola con una scatola non ruotata per rappresentare il resto del corpo. Ciò potrebbe far sì che il lettore scivoli automaticamente su qualcosa di abbastanza piccolo.

Tuttavia, ciò probabilmente causerebbe un po 'di clipping con il modello del lettore e le scale.

Un'altra idea è quella di mettere un rettangolo di selezione dalla testa del personaggio a kness con una larghezza maggiore rispetto alla casella del personaggio.

Quando il giocatore si scontra con qualcosa che la casella 'A' non ha, puoi spostare il giocatore in cima a ciò con cui si è scontrato

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground

12

Esistono tre approcci generali per gestire le scale nei videogiochi:

L'approccio "Mario" è che devi saltare per salire le scale.

L'approccio "Castlevania" è che salire / scendere le scale è un diverso tipo di movimento; è necessario premere "su" sul controller e viene riprodotta un'animazione speciale "salire le scale" per attraversare le scale. Una variante di questo è l'approccio "Resident Evil", in cui muoversi su / giù per le scale viene trattato come un filmato completo che viene riprodotto quando il giocatore preme un pulsante di interazione; non è consentito salire le scale interattive.

L'approccio "Quasi tutti gli altri" è quello che hai menzionato: tratta le scale come se fossero effettivamente una rampa. A seconda del tipo di gioco, potresti voler posizionare la rampa a diverse altezze rispetto alle scale. In genere in un gioco 2D, il trucco "le scale sono in realtà una rampa" è meno evidente per il giocatore se la rampa è a livello con gli angoli inferiori di ogni gradino, mentre in un gioco 3D è in genere meno evidente se la rampa è a livello con gli angoli superiori di ogni gradino. (come in un gioco 2D è più facile notare se i piedi di un personaggio fluttuano sul terreno, e quindi vuoi minimizzarlo, mentre in un gioco 3D è più facile notare se i piedi di un personaggio si stagliano sul terreno, e così tu voglio minimizzarlo).


Grande osservazione su float / clipping su diversi punti di vista grafici.
Kroltan,

Le tue informazioni sono un po 'sbagliate. Solo nei vecchi giochi di Mario devi saltare per salire le scale. Ma immagino sia ovvio. Ma il male residente sicuramente aveva anche delle scale che possono essere salite in modo interattivo!
Tara,

4

La maggior parte dei metodi che ho incontrato sono già stati indicati sopra, ma ce n'è ancora uno che non è stato menzionato. Quando il giocatore incontra un ostacolo verticale abbastanza corto (diciamo 1/3 della sua altezza), mettilo semplicemente in cima. Minecraft e il motore Source, ad esempio, adottano questo approccio in quel tipo di situazione. Inoltre, questo metodo ti consente di utilizzare AABB puro per tutta la fisica senza mettere il giocatore nel dolore di dover costantemente saltare le scale.


Sarebbe bello se potessi spiegare come rilevare tali ostacoli.
Tara,

0

Attualmente sto lavorando su una parte simile di un motore, e il modo in cui ho affrontato le scale / le pendenze è contando i pixel trasparenti nella trama della mia rampa e compensando l'oggetto del giocatore per l'importo trovato.

È simile all'idea della mappa di altezza che è dettagliata in questo articolo: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

Immagino che sia davvero quello che vorresti fare, e puoi scegliere di riprodurre un'animazione diversa che viene riprodotta in base all'ascensione delle scale.

C'è anche una buona panoramica dei diversi concetti di pendenza in questo articolo: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

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.