Giocatore che si alza, salta o si arrampica?


11

In un gioco platform basato sulla fisica 2D che contiene scale, come si determina se il giocatore che sale su è causato da un salto o che sale una scala, in modo da sapere quale animazione giocare?

E in generale, ovviamente, il vettore di direzione non è sufficiente per determinare l'animazione da riprodurre: come si determina anche la causa del movimento (quindi si conosce lo sprite corretto da usare)?


1
Se un giocatore è su una scala, è davvero in aria?
Derek,

Risposte:


15

Ho un problema di logica personale su base regolare che sembra esprimere qui. È che a volte guardi la logica e la programmazione dalla direzione completamente sbagliata. In questo caso, sembra che tu non ti stia accorgendo che fin dall'inizio sai cosa sta succedendo, a causa del codice logico. Dovresti già sapere, a livello di programmazione, se è sulla scala o meno.

Pensaci (come ho detto, ho spesso questo problema). La logica dei giochi dovrebbe sapere che sei sulla scala, supponendo che tu sia un programmatore intelligente. Per una spiegazione migliore, ho un tipo di archivio di file e ho perso circa un'ora al giorno cercando di capire come ottenere la dimensione dei dati e non ho mai smesso una volta di pensare che, quando carico il file, ora conoscere le sue dimensioni: P.

Il motivo per cui questo si riferisce in modo così esclusivo, è che lo stai guardando come "Ora che sono in aria, come faccio a capire se sono su una scala o salto?" ... Quando dovresti davvero pensa "Sto per salire in aria, ma con quale metodo PRIMA, in modo da poterlo usare per le animazioni."


Semplice ad esempio: OnJump()cambia il tuo jumpingbooleano in vero, e quindi se sei in aria ed jumpingè falso, allora stai cadendo o su una scala, ecc.
Joshua Hedges,

6

Il sistema fisico non sa né si preoccupa del perché il giocatore si sta muovendo in una determinata direzione. È il tuo gioco che ha spinto il sistema fisico a muovere il giocatore in quel modo, ed è quindi responsabilità del tuo gioco tenerne traccia. L'entità giocatore dovrebbe avere uno stato su di essa che dirà se sta saltando, arrampicandosi, correndo, ecc. Non dovresti provare a capirlo in base a ciò che è accaduto con il sistema fisico.


2

Sembra che qualsiasi evento mai innescato sulla collisione che imposta la velocità verticale dei giocatori potrebbe anche essere usato per impostare una bandiera che specifica quale animazione usare.

Se stai usando una libreria di terze parti che è troppo restrittiva con le informazioni che ti dà, sarebbe possibile circondare la scala con un rettangolo e se il giocatore che si muove verso l'alto e contenuto in quel rettangolo fa l'animazione dell'arrampicata.


Questo in realtà fa emergere un buon punto che stavo per affrontare in seguito nello sviluppo dei miei giochi, ed è come cambiare la velocità di un'animazione basata sulla fisica. Ho personaggi che voglio agitare proceduralmente le braccia, più velocemente in base alla velocità con cui cadono. E non avevo mai pensato a un buon modo per farlo in profondità (pensavo nel tempo), ma la tua idea di velocità è molto meglio. +1 per una risposta utilizzabile generale e non specifico per il suo caso.
Joshua Hedges,

1

Quando si imposta la velocità di salto, impostare anche lo stato dei caratteri su STATE_JUMPING. In questo modo sai sempre in quale stato si trova il giocatore e puoi agire di conseguenza controllando lo stato dei giocatori.

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.