Eine 2D-Pixelwolke einer Maus folgen lassen

10

Ich arbeite an einem 2D-Spiel und versuche, eine "Wolke" aus ein paar hundert winzigen Würfeln oder Scheiben dazu zu bringen, meinem Mauszeiger zu folgen, ohne sich zu überlappen.

Die Verwendung der Physik-Engine führt jedoch zu einer Leistungsschwäche, wenn die Anzahl der Discs zunimmt und die Kollisionserkennung im Allgemeinen wackelig ist.

Gibt es eine einfache Möglichkeit, den Motor für solche Dinge zu optimieren? Wenn nicht, wäre es besser, wenn ich einfach den Motor abstelle und etwas Eigenes schreibe? (Hier an Strohhalmen festhalten, aber :) Gibt es gute Ressourcen oder Beispiele dafür?

Autio
quelle

Antworten:

13

Ja, die Verwendung einer Physik-Engine dafür wäre ein wenig übertrieben. Ich schlage vor, Sie implementieren einen Beflockungsalgorithmus. Die Grundlagen davon sind:

  • Trennung: Steuern Sie, um zu vermeiden, dass sich lokale Herdenkameraden drängen

  • Ausrichtung: Steuern Sie in Richtung der durchschnittlichen Überschrift der örtlichen Herdenkameraden

  • Zusammenhalt: Steuern Sie, um sich der durchschnittlichen Position lokaler Herdenkameraden zu nähern

Sie können es hier in Aktion sehen und einige Details zu seiner Implementierung erhalten . Sie werden einige kleinere Änderungen vornehmen, um eine Kraft auf den Mauszeiger auszuüben.

MichaelHouse
quelle
1
Sie können ein virtuelles dynamisches Raster oder eine andere räumliche Partitionierung verwenden, um die Beflockung effizient zu gestalten, wenn Sie viele Boids haben, die Sie auch nicht naiv verarbeiten können. Viele Möglichkeiten zur Optimierung.
Sean Middleditch