Wie implementiert man eine Schrotflinte in einem Spiel?

14

Pistolen und Maschinengewehre sind einfach - man kann einfach Kugeln in eine bestimmte Richtung fliegen lassen, also habe ich das bereits implementiert. Eine Schrotflinte hingegen beschädigt irgendetwas in einem bestimmten Bereich, das wie ein Kegel aussieht. Wie soll ich das umsetzen? Ich habe hier ein paar Vorschläge, aber ich könnte einige Ratschläge gebrauchen:

  • Teilen Sie eine Kugel in mehrere kleine Kugeln, die von sich aus weniger Schaden verursachen, aber in eine ähnliche Richtung fliegen (ein näherer Gegner wird eher getroffen).
  • Verwenden Sie keine Kugeln - haben Sie nur einen Partikeleffekt eines Schrotflintenschusses und berechnen Sie anhand der Position / Ausrichtung usw., wie viel Schaden Feinde erleiden.
  • Haben Sie eine große unsichtbare Kugel (zum Beispiel einen Würfel), die Dinge beschädigt, sowie einen Partikeleffekt, durch den es aussieht, als wäre es eine Schrotflinte.

Danke im Voraus!

Oleksiy
quelle
Diese Optionen sind alle gültig (obwohl die erste, warum nicht einfach mit mehreren Kugeln beginnen?) Und die Entscheidung basiert auf Ihrem Spieldesign.
Congusbongus
In Verbindung stehend: Genauigkeit gegen Distanzformel und "Kegel des Feuers" können ein guter Suchbegriff für dieses sein.
MichaelHouse

Antworten:

21

Bei den meisten Spielen werden Schrotflinten als Waffe eingesetzt, mit der mehrere Projektile gleichzeitig abgefeuert werden, wobei jedoch jedes mit einer bestimmten Zufallsverteilung des Winkels versehen ist, aus dem sie den Schauspieler verlassen. In den meisten modernen Ego-Shootern haben fast alle Waffen bei jedem Schuss eine gewisse Streuung, um auf lange Distanz eine geringere Genauigkeit zu erzielen. Daher kann dieselbe Implementierung für Schrotflinten verwendet werden.

Einfache Implementierung: Wenn Sie eine Streuung von 10 ° wünschen und der Spieler in Richtung 0 ° vertikal und 50 ° horizontal blickt, lassen die Projektile sie in einem Winkel zwischen -5 ° und + 5 ° vertikal und zwischen 45 ° und 55 ° horizontal.

Bessere Implementierung: Verteilen Sie die Projektile nicht in einem rechteckigen, sondern in einem kreisförmigen Bereich um das Fadenkreuz des Spielers.

Die wahrgenommene verminderte Effizienz auf lange Distanz resultiert aus der Verbreitung der Projektile, was bedeutet, dass entfernte und kleine Ziele nicht von allen getroffen werden. Wenn Sie dies weiter betonen möchten, um Ihre Schrotflinte zu einer reinen Waffe mit kurzer Reichweite zu machen, können Sie auch den Schaden jedes Projektils für jeden Spiel-Logik-Frame, den es durchläuft, reduzieren.

Bei Top-Down- oder Side-Scrolling-Schützen ist es weniger üblich, auf alle Waffen zu streuen, da die Spielfläche zu klein ist, um einen Sinn zu ergeben. Wenn Sie jedoch eine Waffe wie eine Schrotflinte wollen, ist dies eine andere Sache und dasselbe Die Technik kann verwendet werden, nur dass Sie sich nicht um die 3. Dimension kümmern müssen. Alternativ können Sie die Projektile auch in festen Winkeln wie -6 °, -4 °, -2 °, 0 °, 2 °, 4 °, 6 ° abfeuern. In einem 2D-Kontext sieht es nicht so künstlich aus wie in einem 3D-Kontext, und der Herausforderer wird es mögen, weil es die Chance verringert.

Philipp
quelle
Die bessere Implementierung ist genauso einfach. Der erste Ansatz erfordert zwei zufällige Winkel (horizontal und vertikal), ebenso wie der zweite (außer Achse [0, + 5 °] und Drehung entlang der Achse [0, 360 °])
MSalters
@MSalters Das verteilt die Projektile nicht gleichmäßig im Kreis. Stattdessen werden sie um die Achse konzentriert. Dies kann der angestrebte Effekt sein oder auch nicht. Um eine gleichmäßige Zufallsverteilung innerhalb des Kreises zu erhalten, lesen Sie diese Antwort .
Daniel AA Pelsmaeker
@Virtlink: Richtig, obwohl eine einheitliche Wahrscheinlichkeitsdichte innerhalb des Kreises nicht das ist, wonach ich strebe. Eine Normalverteilung ist in der Regel am besten für solche physikalischen Aufgaben geeignet, und es ist auch besonders einfach: Verteilen Sie einfach die ϑ-Werte mit einer 1D-Normalverteilung und die φ-Werte mit derselben mit ϑ skalierten Normalverteilung. Es müssen keine doppeltpolaren Koordinaten angegeben werden.
Abfahrt um ca. 20.9.13
Hier ist eine Seite, auf der die Spreads für Schrotflinten besprochen werden .
AJMansfield