Also beginne ich damit, das Angreifen in unser 2D-Weltraum-RTS einzuführen (Dies ist in Unity, es ist also komponentengetrieben). Anfänglich war es so einfach wie "Feind in Reichweite, verursachter Schaden". Es wird jedoch mehrere "Arten" von Waffen / Angriffen geben, die mit ihrem jeweiligen Schiff oder ihrer jeweiligen Struktur verbunden sind. Ebenso wie andere Faktoren, die nur den Rohschaden betreffen, wie z. B. die Schadensart und möglicherweise die Trägheit in der Zukunft.
Hättet ihr, dass jede Einheit und jeder Strukturtyp einen eigenen Angriffstyp hat? Das heißt, Sie erstellen ein Skript für jede Einheit / Struktur, das Angriffstyp, Schaden, Effekte, Reichweite, Partikel, Sprites usw. definiert. Und fügen Sie dies als Komponente hinzu?
Oder erstellen Sie ein Skript, das einen Angriffstyp definiert, ein Skript für den dazugehörigen Projektiltyp ... usw. Erweitern Sie diese und ändern Sie diese für jede Einheit, indem Sie jedes Skript an die Einheit / Struktur anhängen.
Ich hoffe, ich mache einen Sinn, ich habe so lange darüber nachgedacht, dass ich nicht sicher bin, ob ich ein Problem löse oder nur meine eigenen Probleme erfasse und mich in ein Loch grabe.
Wenn Sie ein Spiel haben, das eine Vielzahl von Angriffstypen haben kann, die möglicherweise auf eine bestimmte Einheit / Struktur beschränkt sind, wie entwerfen Sie das Framework, das diese mit den bestimmten Einheiten / Strukturen in einer komponentengesteuerten Entwurfsumgebung verknüpft ?
Wenn dies nicht klar genug ist, lassen Sie es mich wissen.
Edit: Tolle Antworten, danke.
Erweiterte Frage:
Die Antworten variieren anscheinend von "Jedes Objekt kann ein eigenes Angriffsskript haben" bis "Die Angriffstypen als eigene Skripte haben und diese für eine wiederverwendbarere Lösung jedem Objekt zuweisen". Nehmen wir an, ich habe einen "Blaster" -Angriff, er schießt mit einer bestimmten Geschwindigkeit auf ein rotes Projektil. Der Schaden, die Feuerrate und die Größe des Projektils hängen von der Einheit ab, die es abfeuert. Ist es besser, nur ein Angriffsskript für diese Einheit zu erstellen oder zu versuchen, einen "Blaster-Angriff" so zu modifizieren, dass er dem Zweck jeder Einheit entspricht, die ihn verwenden möchte?