Mouvement constant de balles 2D dans un shmup

8

J'ai suivi le tutoriel pixelnest pour créer un shmup 2D ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

En travaillant sur cela, j'ai expérimenté l'augmentation de la cadence de tir pour obtenir un flux continu de balles, et j'ai remarqué que les balles sont plus espacées si le navire est reculé, et elles se regroupent lorsque le navire est avancé. . Existe-t-il un moyen de maintenir une distance constante entre les balles quel que soit le mouvement du joueur?

Dois-je même m'en soucier? J'ai l'impression que si le joueur recule, la cadence de tir est essentiellement plus lente (au moins jusqu'à ce qu'ils atteignent le bord de l'écran) et vice versa si vous avancez.

MHTri
la source

Réponses:

16

C'est un effet Doppler classique , ce qui est tout à fait normal. Si vous normal_distance_caused_by_firerate - ship_backward_distance_passedreculez , alors la distance entre les balles est , au lieu de juste normal_distance_caused_by_fireratesi le navire reste immobile.

Si vous augmentez la vitesse des balles, cet effet serait plus difficile à remarquer, car la distance serait plus grande par elle-même, par rapport à la vitesse du navire.

Vous pouvez augmenter le tir si le navire recule et le diminuer lorsqu'il avance, mais ce n'est pas un comportement normal et cela peut sembler bizarre. Ce serait aussi tromper la logique du jeu.

Pour résumer, vous devez le laisser tel quel, ou diminuer la vitesse du navire / augmenter la vitesse des balles pour diminuer la différence visuelle de distance entre les balles tout en vous déplaçant vers l'avant / vers l'arrière.

kreys
la source
2
+1 pour l'effet Doppler. Comme le mentionne kreys, il s'agit d'un comportement absolument normal et la plupart des gens pensent que c'est une réponse naturelle.
Tom 'Blue' Piddock du
Hah, j'ai lu sur l'effet Doppler mais ça ne m'est jamais venu à l'esprit que ça s'appliquerait ici! Quant à la «réponse naturelle», j'étais plus préoccupé si cela affectait de toute façon l'équilibre du gameplay. Il fait en quelque sorte un mécanisme de risque / récompense mineur intéressant (rapprochez-vous des ennemis pour les tuer plus rapidement). D'autres shmups (touhou, shmups au trésor, etc.) semblent avoir atteint une distance de balle constante, mais il se pourrait très bien qu'ils aient rendu la vitesse des balles si élevée que je suis dupe de penser que la distance entre les tirs reste uniforme.
MHTri
En réalité, vous ne tuez pas l'ennemi beaucoup plus rapidement. Je pense que vous êtes toujours confus? La seule différence en termes d'efficacité de destruction est la "latence" des balles (temps nécessaire pour qu'une balle se déplace) car la bande passante (vitesse de tir) est la même. Donc, fondamentalement, si vous êtes plus proche, il mourra plus rapidement uniquement parce que les balles parcourent une distance plus courte, ce qui prend moins de temps.
AturSams
Disons que si j'incluais une arme laser, cette arme n'aurait pratiquement pas de temps de trajet (par rapport à une arme à balles) et infligerait donc des dégâts constants à la cible quelle que soit la façon dont le joueur se déplaçait. Ma question était essentiellement de faire en sorte qu'une arme à balles agisse comme un laser, car si le joueur se déplaçait en arrière / en avant, le temps de déplacement des balles augmenterait / diminuerait.
MHTri
2
@MHTri Votre capacité à exploiter l'effet doppler est naturellement limitée par la distance qui reste entre vous et la cible. Finalement, vous devrez battre en retraite et pendant ce temps, votre cadence de tir effective (du point de vue des cibles) est réduite. Plus vous vous déplacez rapidement, plus la cadence de tir est élevée, mais plus tôt vous manquerez d'espace. Cela ne signifie pas qu'un joueur intelligent ne peut pas en profiter - si vous pouvez tuer l'ennemi avant de manquer d'espace et battre en retraite quand il n'y a pas d'ennemis, c'est une victoire nette. Mais je dirais que le jeu intelligent devrait être récompensé et non puni.
Doval
1

Ajoutez la vitesse du navire à la vitesse des balles lors de leur création.

En reculant, les balles seront ralenties. En avançant, ils seront accélérés. Cependant, cela aura pour effet de faire bouger les balles horizontalement lorsque le vaisseau le fera - expérimentez pour que les balles soient affectées uniquement par la vitesse y.

Steffan Donal
la source
Ironiquement, bien que cela soit plus proche de la physique réelle et évite le "problème" que l'auteur de la question essaie d'éviter, le résultat n'est pas ce à quoi je m'attendrais en tant que joueur. Comme le dit @kreys, l'effet Doppler est ce que les gens s'attendent à voir ici.
Peeja
3
si vous le faites, vous pouvez vous retrouver dans des situations étranges, par exemple lorsque vous tirez rapidement deux balles, tout en changeant la direction du mouvement du navire d'avant en arrière, vous auriez des balles avec une vitesse différente, où l'une peut rattraper l'autre, ce qui est totalement non naturel.
kreys
(Là encore, c'est seulement plus proche de la physique réelle s'il n'y a pas de résistance à l'air. Et pour être vraiment précis, vous soustrayeriez également l'élan des balles à celui du navire. Mais ce serait idiot.)
Peeja
Merci pour cela. Je vais essayer ce soir et voir ce qui se passe, mais j'imagine que c'est un cas d'optimisation prématurée et l'espacement variable des balles aura un effet de gameplay négligeable.
MHTri
Je conviens que vous n'avez pas vraiment besoin de vous soucier de celui-ci. Je sais que je ne le fais pas quand je joue aux SHMUP
Steffan Donal