Konstante 2D-Kugelbewegung in einem Shmup


8

Ich habe das pixelnest-Tutorial befolgt, um ein 2D-Shmup zu erstellen ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

Während ich daran arbeitete, habe ich versucht, die Schussrate zu erhöhen, um einen kontinuierlichen Strom von Kugeln zu erhalten, und ich habe festgestellt, dass die Kugeln mehr Abstand voneinander haben, wenn das Schiff rückwärts bewegt wird, und sie verklumpen, wenn das Schiff vorwärts bewegt wird . Gibt es eine Möglichkeit, den Abstand zwischen den Kugeln unabhängig von der Bewegung des Spielers konstant zu halten?

Sollte es mich überhaupt interessieren? Ich habe das Gefühl, dass wenn der Spieler sich rückwärts bewegt, die Schussrate wesentlich langsamer ist (zumindest bis er den Bildschirmrand erreicht) und umgekehrt, wenn Sie sich vorwärts bewegen.

Antworten:


16

Es ist ein klassischer Doppler-Effekt , was ganz normal ist. Wenn Sie sich rückwärts bewegen, beträgt der Abstand zwischen den Kugeln normal_distance_caused_by_firerate - ship_backward_distance_passednur, normal_distance_caused_by_fireratewenn das Schiff stillsteht .

Wenn Sie die Geschossgeschwindigkeit erhöhen, ist dieser Effekt schwerer zu bemerken, da die Entfernung von sich aus im Vergleich zur Schiffsgeschwindigkeit größer wäre.

Sie könnten die Feuerrate erhöhen, wenn sich das Schiff zurückbewegt, und sie verringern, wenn sich das Schiff vorwärts bewegt, aber dies ist kein normales Verhalten und es könnte seltsam aussehen. Es würde auch die Spielelogik betrügen.

Zusammenfassend sollten Sie es so lassen, wie es ist, oder die Schiffsgeschwindigkeit verringern / die Geschossgeschwindigkeit erhöhen, um den visuellen Unterschied im Abstand zwischen den Geschossen zu verringern, während Sie sich vorwärts / rückwärts bewegen.


2
+1 für den Doppler-Effekt. Wie Kreys erwähnt, ist dies ein absolut normales Verhalten und etwas, das die meisten Menschen für eine natürliche Reaktion halten.
Tom 'Blue' Piddock

Hah, ich habe über den Doppler-Effekt gelesen, aber es ist mir nie in den Sinn gekommen, dass er hier gelten würde! Was die "natürliche Reaktion" angeht, war ich eher besorgt, ob dies die Spielbalance in irgendeiner Weise beeinträchtigen würde. Es macht irgendwie eine interessante kleine Risiko- / Belohnungsmechanik (näher an Feinde heran, um sie schneller zu töten). Andere Shmups (Touhou, Treasure Shmups usw.) scheinen eine konstante Geschossentfernung erreicht zu haben, aber es könnte sehr gut sein, dass sie Geschossgeschwindigkeiten so hoch gemacht haben, dass ich täusche, dass die Entfernung zwischen den Schüssen gleichmäßig bleibt.
MHTri

Du tötest den Feind nicht viel schneller. Ich denke du bist immer noch verwirrt? Der einzige Unterschied in der Tötungseffektivität ist die "Latenz" der Kugeln (Zeit, die eine Kugel benötigt, um sich fortzubewegen), da die Bandbreite (Feuerrate) gleich ist. Wenn Sie näher dran sind, stirbt es im Grunde nur schneller, weil die Kugeln eine kürzere Strecke zurücklegen, was weniger Zeit in Anspruch nimmt.
AturSams

Nehmen wir an, wenn ich eine Laserwaffe einbinden würde, hätte diese Waffe so gut wie keine Reisezeit (im Vergleich zu einer kugelbasierten Waffe) und würde dem Ziel daher konstanten Schaden zufügen, unabhängig davon, wie sich der Spieler bewegt hat. Bei meiner Frage ging es im Wesentlichen darum, eine kugelbasierte Waffe wie einen Laser wirken zu lassen, denn wenn sich der Spieler vorwärts / rückwärts bewegt, erhöht / verringert sich die Laufzeit der Kugel.
MHTri

2
@MHTri Ihre Fähigkeit, den Doppler-Effekt auszunutzen, ist natürlich durch die verbleibende Entfernung zwischen Ihnen und dem Ziel begrenzt. Schließlich müssen Sie sich zurückziehen, und während dieser Zeit wird Ihre effektive Feuerrate (aus Sicht der Ziele) verringert. Je schneller Sie sich bewegen, desto höher ist die Feuerrate, aber desto schneller wird Ihnen der Platz ausgehen. Das bedeutet nicht, dass ein kluger Spieler es nicht ausnutzen kann. Wenn Sie den Feind töten können, bevor Ihnen der Raum ausgeht, und sich zurückziehen, wenn es keine Feinde gibt, ist dies ein Nettogewinn. Aber ich würde argumentieren, dass intelligentes Spielen belohnt und nicht bestraft werden sollte.
Doval

1

Addieren Sie die Schiffsgeschwindigkeit zur Geschossgeschwindigkeit, wenn sie erstellt werden.

Wenn Sie sich rückwärts bewegen, werden die Kugeln verlangsamt. Wenn sie sich vorwärts bewegen, werden sie beschleunigt. Dies hat jedoch den Effekt, dass sich die Kugeln horizontal bewegen, wenn das Schiff dies tut. Experimentieren Sie damit, dass die Kugeln nur von der y-Geschwindigkeit beeinflusst werden.


Obwohl dies näher an der realen Physik liegt und das "Problem" vermeidet, das der Fragesteller zu vermeiden versucht, ist das Ergebnis ironischerweise nicht das, was ich als Spieler erwarten würde. Wie @kreys sagt, ist der Doppler-Effekt das, was die Leute hier erwarten.
Peeja

3
Wenn Sie dies tun, können Sie sich in seltsamen Situationen befinden, zum Beispiel, wenn Sie schnell zwei Kugeln abschießen und während Sie die Richtung der Schiffsbewegung von rückwärts nach vorwärts ändern, haben Sie Kugeln mit unterschiedlicher Geschwindigkeit, bei denen eine die andere aufholen kann, was völlig ist unnatürlich.
Kreys

(Andererseits ist es nur dann näher an der realen Physik, wenn es keinen Luftwiderstand gibt. Und um genau zu sein, würden Sie auch den Schwung der Kugeln vom Schiff abziehen. Aber das wäre albern.)
Peeja

Danke dafür. Ich werde es heute Abend versuchen und sehen, was passiert, aber ich stelle mir vor, dass dies ein Fall vorzeitiger Optimierung ist und der variable Kugelabstand einen vernachlässigbaren Gameplay-Effekt hat.
MHTri

Ich würde zustimmen, dass Sie sich nicht wirklich um diesen kümmern müssen. Ich weiß, dass ich es nicht tue, wenn ich SHMUPs spiele
Steffan Donal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.