Movimento constante da bala 2D em um shmup

8

Eu tenho seguido o tutorial pixelnest para fazer um shmup 2D ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

Enquanto trabalhava nisso, experimentei aumentar a taxa de disparo para obter um fluxo contínuo de balas, e notei que as balas ficam mais espaçadas se o navio for movido para trás e se amontoam quando o navio é movido para frente . Existe uma maneira de manter distância constante entre as balas, não importa o movimento do jogador?

Eu deveria me importar? Tenho a sensação de que, se o jogador se move para trás, a taxa de disparo é essencialmente mais lenta (pelo menos até atingir a borda da tela) e vice-versa, se você se mover para frente.

MHTri
fonte

Respostas:

16

É o efeito Doppler clássico , que é uma coisa bastante normal. Se você se mover para trás, a distância entre as balas será normal_distance_caused_by_firerate - ship_backward_distance_passediniciada, normal_distance_caused_by_fireratese o navio estiver parado.

Se você aumentar a velocidade das balas, esse efeito seria mais difícil de perceber, porque a distância seria maior por si só, em comparação com a velocidade do navio.

Você pode aumentar a taxa de disparo se a nave estiver voltando e diminuí-la quando estiver avançando, mas isso não é um comportamento normal e pode parecer estranho. Seria também trair a lógica do jogo.

Para resumir, você deve deixá-lo como está, ou diminuir a velocidade da nave / aumentar a velocidade da bala para diminuir a diferença visual na distância entre as balas enquanto se move para frente / para trás.

kreys
fonte
2
+1 para o efeito Doppler. Como Kreys menciona, esse é um comportamento absolutamente normal e algo que a maioria das pessoas sente é uma resposta natural.
Tom 'Blue' Piddock
Hah, eu li sobre o efeito Doppler, mas nunca passou pela minha cabeça que se aplicaria aqui! Quanto à 'resposta natural', eu estava mais preocupado se isso afetaria o equilíbrio da jogabilidade de qualquer maneira. Isso faz com que seja um mecânico de risco / recompensa menor interessante (aproxime-se dos inimigos para matá-los mais rapidamente). Outros shmups (touhou, shmups de tesouros, etc.) parecem ter alcançado uma distância constante da bala, mas pode muito bem ser que eles tenham tornado a velocidade da bala tão alta que sou enganado a pensar que a distância entre os tiros permanece uniforme.
precisa saber é o seguinte
Na verdade, você não mata o inimigo muito mais rápido. Eu acho que você ainda está confuso? A única diferença na eficácia da matança é a "latência" das balas (tempo necessário para que uma bala se desloque), pois a largura de banda (taxa de disparo) é a mesma. Então, basicamente, se você estiver mais próximo, ele morrerá mais rápido apenas porque as balas percorrem uma distância menor, o que leva menos tempo.
AturSams
Bem, digamos que se eu incluísse uma arma a laser, essa arma não teria praticamente nenhum tempo de viagem (em relação a uma arma à base de balas) e causaria dano constante ao alvo, independentemente de como o jogador se movesse. Minha pergunta era essencialmente sobre fazer uma arma baseada em bala agir como um laser, pois se o jogador se movesse para trás / para frente, o tempo de viagem da bala aumentaria / diminuiria.
precisa saber é o seguinte
2
@MHTri Sua capacidade de explorar o efeito doppler é naturalmente limitada pela distância restante entre você e o alvo. Eventualmente, você terá que recuar e, durante esse período, sua taxa efetiva de tiro (do ponto de vista dos alvos) será reduzida. Quanto mais rápido você se move, maior a taxa de tiro, mas quanto mais cedo você ficar sem espaço. Isso não significa que um jogador inteligente não possa tirar proveito disso - se você pode matar o inimigo antes de ficar sem espaço e se retirar quando não houver inimigos, é uma vitória líquida. Mas eu diria que o jogo inteligente deve ser recompensado, não punido.
Doval 24/04
1

Adicione a velocidade da nave à velocidade da bala quando forem criadas.

Ao recuar, as balas serão mais lentas. Ao avançar, eles serão acelerados. No entanto, isso terá o efeito de fazer as balas se moverem horizontalmente quando a nave o fizer - experimente fazer com que as balas sejam afetadas apenas pela velocidade y.

Steffan Donal
fonte
Ironicamente, enquanto isso está mais próximo da física real e evita o "problema" que o autor da pergunta está tentando evitar, o resultado não é o que eu esperaria como jogador. Como @kreys diz, o efeito Doppler é o que as pessoas esperam ver aqui.
Peeja
3
se você fizer isso, poderá se encontrar em situações estranhas, por exemplo, quando dispara duas balas rapidamente, enquanto, ao mudar a direção do movimento do navio de trás para frente, você terá balas com velocidade diferente, onde uma pode alcançar a outra, o que é totalmente antinatural.
kreys
(Então, novamente, é apenas mais perto da física real se não há nenhuma resistência do ar e para ser realmente precisa você também iria subtrair impulso das balas do navio de Mas isso seria tolo...)
Peeja
Obrigado por isso. Vou tentar hoje à noite e ver o que acontece, mas imagino que este seja um caso de otimização prematura e o espaçamento variável entre marcadores terá um efeito de jogabilidade insignificante.
precisa saber é o seguinte
Concordo que você realmente não precisa se preocupar com este. Eu sei que eu não quando eu jogo shmups
Steffan Donal