Movimento costante di proiettili 2D in uno shmup


8

Ho seguito il tutorial pixelnest per creare uno shmup 2D ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

Mentre ci lavoravo ho provato ad aumentare la velocità di fuoco per ottenere un flusso continuo di proiettili e ho notato che i proiettili sono più distanziati se la nave viene spostata all'indietro e si ammassano quando la nave viene spostata in avanti . C'è un modo per mantenere una distanza costante tra i proiettili, indipendentemente dal movimento del giocatore?

Dovrei preoccuparmene? Ho la sensazione che se il giocatore si muove all'indietro, la frequenza di fuoco è essenzialmente più lenta (almeno fino a quando non raggiungono il bordo dello schermo) e viceversa se si sposta in avanti.

Risposte:


16

È il classico effetto Doppler , che è una cosa abbastanza normale. Se ti muovi all'indietro, la distanza tra i proiettili è normal_distance_caused_by_firerate - ship_backward_distance_passedfissa, solo normal_distance_caused_by_fireratese la nave si ferma.

Se aumenti la velocità dei proiettili, questo effetto sarebbe più difficile da notare, perché la distanza sarebbe maggiore da sola, rispetto alla velocità della nave.

Potresti aumentare il fuoco se la nave sta tornando indietro e diminuirlo quando si muove in avanti, ma questo non è un comportamento normale e potrebbe sembrare strano. Sarebbe anche tradire la logica del gioco.

Per riassumere, dovresti lasciarlo così com'è, o diminuire la velocità della nave / aumentare la velocità del proiettile per diminuire la differenza visiva nella distanza tra i proiettili mentre ti muovi in ​​avanti / indietro.


2
+1 per l'effetto Doppler. Come kreys menziona questo è un comportamento assolutamente normale e qualcosa che la maggior parte delle persone ritiene sia una risposta naturale.
Tom 'Blue' Piddock,

Hah, ho letto dell'effetto Doppler ma non mi è mai passato per la testa, si sarebbe applicato qui! Per quanto riguarda la "risposta naturale", ero più preoccupato se ciò avrebbe influenzato il bilanciamento del gioco in ogni caso. Fa una sorta di interessante meccanismo di rischio / ricompensa minore (avvicinati ai nemici per ucciderli più velocemente). Altri shmup (touhou, shmup di tesori, ecc.) Sembrano aver raggiunto una distanza di proiettile costante, ma potrebbe benissimo essere che le velocità dei proiettili siano così alte da farmi credere che la distanza tra i colpi rimanga uniforme.
MHTri

In realtà non uccidi il nemico molto più velocemente. Penso che tu sia ancora confuso? L'unica differenza nell'efficacia dell'uccisione è la "latenza" dei proiettili (tempo necessario per viaggiare un proiettile) poiché la larghezza di banda (frequenza di fuoco) è la stessa. Quindi sostanzialmente se sei più vicino morirà più velocemente solo perché i proiettili percorrono una distanza più breve che richiede meno tempo.
AturSams,

Bene diciamo che se dovessi includere un'arma laser, quell'arma non avrebbe praticamente nessun tempo di viaggio (rispetto ad un'arma basata su proiettile) e quindi infliggerebbe danni costanti al bersaglio indipendentemente da come si muoveva il giocatore. La mia domanda era essenzialmente di fare in modo che un'arma basata su proiettile si comportasse come un laser, poiché se il giocatore si spostava avanti / indietro il tempo di viaggio del proiettile aumentava / diminuiva.
MHTri

2
@MHTri La tua capacità di sfruttare l'effetto doppler è naturalmente limitata dalla distanza rimanente tra te e il bersaglio. Alla fine dovrai ritirarti e durante quel periodo la tua velocità di fuoco effettiva (dal punto di vista degli obiettivi) viene ridotta. Più veloce ti muovi, maggiore è la velocità di fuoco, ma prima rimarrai senza spazio. Ciò non significa che un giocatore intelligente non possa trarne vantaggio: se riesci a uccidere il nemico prima di esaurire lo spazio e ritirarti quando non ci sono nemici, è una vittoria netta. Ma direi che il gioco intelligente dovrebbe essere premiato, non punito.
Doval,

1

Aggiungi la velocità della nave alla velocità del proiettile quando vengono create.

Quando ci si sposta all'indietro, i proiettili verranno rallentati. Quando avanzano, saranno accelerati. Tuttavia, ciò avrà l'effetto di far muovere i proiettili in orizzontale quando la nave lo fa - sperimentare che i proiettili siano influenzati solo dalla velocità y.


Ironia della sorte, mentre questo è più vicino alla fisica reale ed evita il "problema" che l'autore della domanda sta cercando di evitare, il risultato non è quello che mi aspetterei da giocatore. Come dice @kreys, l'effetto Doppler è ciò che la gente si aspetta di vedere qui.
Peeja,

3
se lo fai, puoi trovarti in situazioni strane, ad esempio quando spari rapidamente due proiettili, cambiando nel frattempo la direzione del movimento della nave da dietro a avanti avresti proiettili con velocità diversa, in cui uno può raggiungere l'altro, il che è totalmente innaturale.
kreys,

(Ancora una volta, è solo più vicino alla fisica reale se non c'è resistenza all'aria. E per essere davvero accurati, sottraresti anche lo slancio dei proiettili da quello della nave. Ma sarebbe sciocco.)
Peeja

Grazie per questo. Stasera proverò a vedere cosa succede, ma immagino che questo sia un caso di ottimizzazione prematura e la spaziatura dei proiettili variabili avrà un effetto di gioco trascurabile.
MHTri

Concordo sul fatto che non hai davvero bisogno di preoccuparti di questo. So di no quando gioco a SHMUPs
Steffan Donal il
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.