Movimiento constante de balas 2D en un shmup

8

He estado siguiendo el tutorial de pixelnest para hacer un shmup 2D ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

Mientras trabajaba en esto, experimenté con aumentar la velocidad de disparo para obtener un flujo continuo de balas, y me di cuenta de que las balas están más separadas si la nave se mueve hacia atrás, y se agrupan cuando la nave se mueve hacia adelante . ¿Hay alguna manera de mantener una distancia constante entre las balas sin importar el movimiento del jugador?

¿Debería siquiera importarme? Tengo la sensación de que si el jugador se mueve hacia atrás, entonces la velocidad de disparo es esencialmente más lenta (al menos hasta que alcanzan el borde de la pantalla) y viceversa si se mueve hacia adelante.

MHTri
fuente

Respuestas:

16

Es el efecto Doppler clásico , que es algo bastante normal. Si te mueves hacia atrás, entonces la distancia entre balas es normal_distance_caused_by_firerate - ship_backward_distance_passed, en lugar de solo normal_distance_caused_by_fireratesi el barco se detiene.

Si aumenta la velocidad de las balas, entonces este efecto sería más difícil de notar, porque la distancia sería mayor por sí misma, en comparación con la velocidad del barco.

Podrías aumentar la velocidad de fuego si la nave retrocede y disminuirla cuando avanza, pero este no es un comportamiento normal y podría parecer extraño. También sería una trampa en la lógica del juego.

En resumen, debe dejarlo como está, o disminuir la velocidad del barco / aumentar la velocidad de la bala para disminuir la diferencia visual en la distancia entre las balas mientras se mueve hacia adelante / hacia atrás.

kreys
fuente
2
+1 para el efecto Doppler. Como Kreys menciona, este es un comportamiento absolutamente normal y algo que la mayoría de las personas siente es una respuesta natural.
Tom 'Blue' Piddock
¡Ja, he leído sobre el efecto Doppler pero nunca se me pasó por la cabeza que se aplicaría aquí! En cuanto a la 'respuesta natural', estaba más preocupado si esto afectaría el equilibrio del juego de todos modos. Esto hace que sea una interesante mecánica menor de riesgo / recompensa (acércate a los enemigos para matarlos más rápido). Parece que otros shmups (touhou, shmups del tesoro, etc.) han alcanzado una distancia de bala constante, pero bien podría ser que hicieron que las velocidades de las balas fueran tan altas que me engañen pensando que la distancia entre disparos se mantiene uniforme.
MHTri
En realidad no matas al enemigo mucho más rápido. Creo que todavía estás confundido? La única diferencia en la efectividad de matar es la "latencia" de las balas (tiempo que tarda una bala en viajar) ya que el ancho de banda (velocidad de disparo) es el mismo. Básicamente, si estás más cerca, morirá más rápido solo porque las balas recorren una distancia más corta, lo que lleva menos tiempo.
AturSams
Bueno, digamos que si tuviera que incluir un arma láser, ese arma prácticamente no tendría tiempo de viaje (en relación con un arma basada en balas) y, por lo tanto, infligiría un daño constante al objetivo, independientemente de cómo se moviera el jugador. Mi pregunta era esencialmente sobre cómo hacer que un arma basada en balas actúe como un láser, ya que si el jugador se moviera hacia atrás / adelante, el tiempo de viaje de la bala aumentaría / disminuiría.
MHTri
2
@MHTri Su capacidad para explotar el efecto doppler está naturalmente limitada por la distancia que queda entre usted y el objetivo. Eventualmente, tendrá que retirarse, y durante ese tiempo su velocidad de disparo efectiva (desde el punto de vista de los objetivos) disminuye. Cuanto más rápido se mueva, mayor será la velocidad de disparo, pero antes se quedará sin espacio. Eso no significa que un jugador inteligente no pueda aprovecharlo: si puedes matar al enemigo antes de que te quedes sin espacio y retirarte cuando no hay enemigos, es una ganancia neta. Pero diría que el juego inteligente debe ser recompensado, no castigado.
Doval
1

Agregue la velocidad de la nave a la velocidad de la bala cuando se crean.

Al moverse hacia atrás, las balas se ralentizarán. Al avanzar, se acelerarán. Sin embargo, esto tendrá el efecto de hacer que las balas se muevan horizontalmente cuando el barco lo haga: experimente que las balas se vean afectadas solo por la velocidad y.

Steffan Donal
fuente
Irónicamente, si bien esto está más cerca de la física real y evita el "problema" que el autor de la pregunta intenta evitar, el resultado no es lo que esperaría como jugador. Como dice @kreys, el efecto Doppler es lo que la gente espera ver aquí.
Peeja
3
si lo hace, puede encontrarse en situaciones extrañas, por ejemplo, cuando dispara dos balas rápidamente, mientras cambia la dirección del movimiento del barco de atrás hacia adelante, tendrá balas con diferente velocidad, donde una puede alcanzar a la otra, lo que es totalmente antinatural.
kreys
(Por otra parte, solo está más cerca de la física real si no hay resistencia del aire. Y para ser realmente exactos, también restarías el impulso de las balas del barco. Pero eso sería una tontería.)
Peeja
Gracias por esto. Voy a intentarlo esta noche y ver qué pasa, pero imagino que este es un caso de optimización prematura y el espaciado variable de la bala tendrá un efecto de juego insignificante.
MHTri
Estoy de acuerdo en que realmente no necesitas preocuparte por este. Sé que no cuando juego SHMUPs
Steffan Donal