Hier ist ein Beispiel für eine solche Schleimausbreitung. Die Substanz ist um die Quelle verteilt (in diesem Beispiel wäre die Quelle das wichtigste außerirdische Gebäude).
Das Spiel ist Starcraft, die lila Substanz heißt Creep.
Wie würde diese Art der Substanzverbreitung in einer 2D-Umgebung von oben nach unten erreicht werden? Berechnen Sie das Fortschreiten der Substanz neu und regenerieren Sie die Wirkung auf die Fliege in jedem Frame oder verwenden Sie lieber eine große Sammlung von Kacheln oder etwas anderes?
2d
algorithm
graphic-effects
Nathan
quelle
quelle
Antworten:
Gemäß Ihrem Kommentar in den anderen Antworten ist Ihr Problem nicht der Kriechwachstumsalgorithmus, sondern der Algorithmus, der die zu verwendende Kriechkachel auswählt.
Welche Kachel verwendet werden soll, hängt davon ab, ob:
Das bedeutet, dass Sie insgesamt 16 Kacheln benötigen. Sie können sie leicht mit einem Bitfeld ansprechen. Hier ist ein Pseudocode, der für jede mögliche Kriechkonstellation eine andere Kachel auswählt:
Beachten Sie, dass bei jeder Änderung des Infektionsstatus einer Kachel alle infizierten benachbarten Kacheln neu bewertet werden müssen, da sich ihre Nachbarschaft jetzt geändert hat.
Wie man die 16 Kachelgrafiken so gestaltet, dass sie gut zusammenpassen, ist eine (neue) Frage für einen Grafikdesigner.
quelle
Vor einiger Zeit habe ich einen Strategie-Artikel gelesen, in dem ausführlich erklärt wurde, wie sich Creep in Starcraft 2 ausbreitet. Ich habe Probleme, ihn jetzt zu finden, aber ich erinnere mich, dass er ziemlich einfach ist und ein bisschen so funktioniert
Der einfachste Weg, um zu verfolgen, auf welche Kacheln sich das Kriechen ausgebreitet hat, ist wahrscheinlich nur eine Flagge für jede Kachel - versuchen Sie nicht, sie in jeder Runde neu zu berechnen.
Die Zeit zwischen "Zecken" kann verwendet werden, um die Ausbreitungsrate des Kriechens zu steuern. Alternativ können Sie zulassen, dass sich das Kriechen bei jedem "Häkchen" auf mehrere Kacheln ausbreitet, oder sogar die Zeit zwischen den Zecken zufällig bestimmen.
Der obige Algorithmus hat den Effekt, dass sich das Kriechen schneller ausbreitet, wenn es auf beiden Seiten von Klippen blockiert wird. Sie können jedoch stattdessen ein zufälliges Plättchen innerhalb des Bereichs der Kriechquelle auswählen und das Kriechen nur dann auf dieses Plättchen ausbreiten, wenn es keine Klippe ist .
quelle