Wie würde ich also vorgehen, um diese Art von Effekt zu erzielen? Sprechen wir über Pixel-Shader, Mischmodi / Filter, Bitmap-Effekte, Partikelsysteme oder was? Nicht wirklich plattformspezifisch. Ich suche nur nach der Theorie, aber spezifische Beispiele oder Links wären großartig. Und je mehr Details desto besser.
Alles das oben Genannte.
Wenn Sie nicht in ihrem Quellcode stöbern, wissen Sie möglicherweise nicht genau, wie sie es getan haben.
Doch von den Blicken der beiden Spiele, beide haben , was erscheint Geometrie und folgen dem Schiff. Es muss nicht unbedingt ein grundlegendes Punkt-Sprite-Partikelsystem sein, aber es ist auch nicht allzu schwierig.
Einige Spiele verwenden einen Kurven-Algorithmus und generieren daraus eine Liste von Scheitelpunkten. Dabei werden verschiedene Texturen an den beiden Endpunkten des Trails verwendet, sodass der Auspuff an einer Stelle heiß und an der anderen kühler und besser aussieht schleppt sich in den Weltraum.
Das Schiff eines Spielers ist ein interessanter Fall, da die Bewegungen unvorhersehbar sind und Sie möglicherweise entweder die Kontrollpunkte Ihres Kurvenalgorithmus aktualisieren oder die letzte Schiffsposition abtasten und daraus Scheitelpunktpositionen generieren müssen.
Schauen Sie sich diese Antwort von einer früheren Frage an, wenn Sie möchten, dass etwas außerhalb der Kontrollpunkte funktioniert. Für Ihre Bedürfnisse würde das Abtasten der Spielerposition wahrscheinlich viel besser funktionieren und einfacher zu verstehen sein.
Folgendes soll Sie zum Nachdenken anregen:
Starten Sie das Abtasten der Playerposition. Diese Punkte bilden die Körpersegmente Ihres Trails, aus denen die Geometrie konstruiert werden kann. Es ist eine gute Idee, ein separates Schwanzsegment mit einer separaten Textur beizubehalten. Möglicherweise möchten Sie erkennen, wann sich ein Spieler dreht, und die Häufigkeit dieser Segmente erhöhen, da Sie sonst blockige Kurven erhalten. Es sei denn, das ist der Effekt, den Sie anstreben :)
Unter bestimmten Umständen müssen die Segmente aufhören, sich zu erzeugen, und die vorhandenen Segmente sollten langsam verkleinert werden, beginnend mit dem Körpersegment, das dem Schwanz am nächsten liegt (aber nicht dem Schwanz selbst). Dies ist der Fall, wenn der Player langsamer wird. Wenn jedoch die Geschwindigkeit, mit der die Segmente verkleinert werden, mit der Schiffsgeschwindigkeit des Spielers übereinstimmt, wird ein neues Segment gerade rechtzeitig beim Herausnehmen gebildet. Das funktioniert also auch für ein Schiff, das sich in voller Bewegung befindet. Die Länge des Pfades ist immer gleich - was einen flüssigen, gleichmäßigen Strom ergibt.
Das Kopfsegment sollte sich immer an der aktuellen Position des Spielers befinden. Wenn Kurven erkannt werden, wird das vorhandene Kopfsegment zu einem Körpersegment hinzugefügt und ein neues Kopfsegment gestartet. Wiederholen. Abhängig von Ihren Texturen kann jedes Segment auch eine maximale Länge haben.
Dies gibt uns eine einfache Möglichkeit, diesen Effekt zu modellieren: Wir arbeiten von der Idee ab, dass der Effekt immer von selbst abnimmt / schrumpft, wenn nicht mehr Segmente geliefert werden, und spielen mit Geschwindigkeiten, um zu verhindern, dass er schrumpft.