Schusssystem

Autor: Jacob Rose

Um ein Schusssystem in das Spiel einzubauen gab es 3 Aspekte:

  1. Projektile
  2. Hitboxen
  3. Das eigentliche Schusssystem für Spieler und Gegner

Projektile

Projektile sind in unserem Spiel eigene Objekte. Sie haben eine Position, eine Richtung in die sie fliegen, eine Geschwindigkeit mit der sie das tun und die information ob sie einen Gegner oder den Spieler treffen sollen um friendly-fire zu vermeiden. Darüber hinaus ist gespeichert ob sie ein Ziel schon getroffen haben und falls ja ein Zeiger auf dieses Objekt.

Hitboxen

Damit man Treffer überhaupt erkennen kann, muss man überprüfen ob sich 2 Objekte (Spieler/Gegner und Projektil) berühren. Dies lässt sich am einfachsten durch Hitboxen umsetzen. Diese sind eine Vereinfachung der eigentlichen Form des Objekts und in meinem Spiel als Würfel um die Position umgesetzt. Der Vorteil von Hitboxen ist offensichtlich: statt dass jedes Körperteil auf eine Berührung mit dem Projektil geprüft wird, reicht es die 2 groben Boxen um diese Objekte zu betrachten.
Um zu überprüfen ob sich zwei Objekte berühren habe ich folgen Test implementiert:

Seperating Axis Test

Ich werde das Konzept dieses Test für 2d erklären, weil sich das Prinzip in 3d nicht ändert. Grob lässt sich sagen, dass zwei Hitboxen sich nicht berühren wenn sie mindestens auf einer Achse getrennt sind. Das heißt man prüft einfach die Existenz einer solchen Achse.

Image Description
Getrennt auf der x-Achse
Image Description
Getrennt auf der y-Achse
Image Description
Keine Trennung. Boxen berühren sich

Schusssystem

Zum Schluss musste ich nur noch entscheiden wie das eigentliche Schießen für Spieler und Gegner funktionieren sollte. Für den Spieler wird einfach überprüft ob die Schusstaste gedrückt wurde. Zusätzlich habe ich einen Timer eingebaut, der nach jedem Schuss gestartet wird und ebenfalls vom System geprüft wird um die Schussrate zu kontrollieren.
Der Gegner schießt automatisch wenn der Spieler sich in einem gewissen Bereich vor dem Gegner befindet und der Timer des Gegners dies zulässt. Zusätzlich wurde ein Schussmuster definiert mit dem sich bestimmen lässt wie der Gegner schießen soll. So kann dieser Beispielsweise direkt geradeaus vor sich schießen oder aber den Spieler anvisieren und an dessen Position schießen. Da hier ebenfalls ein Pattern benutzt wurde lässt sich das Schussystem in Zukunft leicht erweitern

Zurück