Lenkungsverhalten soll dazu beitragen, dass sich autonome Charaktere auf realistische Weise bewegen, indem einfache Kräfte verwendet werden, die eine realistische, improvisatorische Navigation in der Umgebung der Charaktere bewirken. In diesem Tutorial werde ich die grundlegende Theorie hinter der suchen Lenkverhalten sowie dessen Umsetzung.
Die Ideen hinter diesen Verhaltensweisen wurden von Craig W. Reynolds vorgeschlagen; Sie basieren nicht auf komplexen Strategien, einschließlich Pfadplanung oder globaler Berechnungen, sondern verwenden lokale Informationen, beispielsweise die Kräfte der Nachbarn. Dadurch sind sie einfach zu verstehen und zu implementieren, können aber dennoch sehr komplexe Bewegungsmuster erzeugen.
Hinweis: Obwohl dieses Tutorial mit AS3 und Flash geschrieben wurde, sollten Sie in der Lage sein, in fast jeder Spieleentwicklungsumgebung dieselben Techniken und Konzepte anzuwenden. Sie müssen ein grundlegendes Verständnis von mathematischen Vektoren haben.
Die Umsetzung aller am Lenkverhalten beteiligten Kräfte kann mit mathematischen Vektoren erreicht werden. Da diese Kräfte die Geschwindigkeit und Position des Charakters beeinflussen, empfiehlt es sich, Vektoren zu verwenden, um sie ebenfalls darzustellen.
Obwohl ein Vektor eine Richtung, es wird ignoriert, wenn es sich auf die Position bezieht (nehmen wir an, der Positionsvektor zeigt auf die aktuelle Position des Charakters).
Die Abbildung oben zeigt ein Zeichen, das bei positioniert ist (x, y)
mit einer Geschwindigkeit (a, b)
. Die Bewegung wird mithilfe der Euler-Integration berechnet:
Position = Position + Geschwindigkeit
Die Richtung des Geschwindigkeitsvektors bestimmt, wohin sich der Charakter bewegt, während seine Länge (oder Größe) steuert, um wie viel sich jeder Frame bewegen wird. Je größer die Länge, desto schneller bewegt sich der Charakter. Der Geschwindigkeitsvektor kann abgeschnitten werden, um sicherzustellen, dass er einen bestimmten Wert, normalerweise die maximale Geschwindigkeit, nicht überschreitet. Unten ist ein Test, der diesen Ansatz zeigt.
Das rote Quadrat bewegt sich auf ein Ziel zu (den Mauszeiger). Dieses Bewegungsmuster veranschaulicht das suchen Verhalten ohne die bisher angewendeten Lenkkräfte. Die grüne Linie stellt den Geschwindigkeitsvektor dar, der wie folgt berechnet wird:
Geschwindigkeit = normalisieren (Zielposition) * max_velocity
Es ist wichtig zu wissen, dass der Charakter ohne die Lenkkraft gerade Routen beschreibt und seine Richtung sofort ändert, wenn sich das Ziel bewegt, wodurch ein abrupter Übergang zwischen der aktuellen und der neuen Route erfolgt.
Wenn nur die Geschwindigkeitskraft beteiligt wäre, würde der Buchstabe einer durch die Richtung dieses Vektors definierten geraden Linie folgen. Eine der Ideen des Lenkverhaltens ist die Beeinflussung der Bewegung des Charakters durch das Hinzufügen von Kräften (genannt Lenkkräfte). Abhängig von diesen Kräften bewegt sich der Charakter in die eine oder andere Richtung.
Durch das Hinzufügen von Lenkkräften zu jedem Charakter des Frame wird die Geschwindigkeit stufenlos eingestellt, um plötzliche Routenänderungen zu vermeiden. Wenn sich das Ziel bewegt, wird es der Charakter tun allmählich Ändern Sie den Geschwindigkeitsvektor und versuchen Sie, das Ziel an seinem neuen Ort zu erreichen.
Das Suchverhalten beinhaltet zwei Kräfte: gewünschte Geschwindigkeit und Lenkung:
Das gewünschte Geschwindigkeit ist eine Kraft, die den Charakter auf kürzestem Weg zum Ziel führt (gerade Linie zwischen ihnen - zuvor war dies die einzige auf den Charakter wirkende Kraft). Das Lenkung Kraft ist das Ergebnis der gewünschten Geschwindigkeit, die von der aktuellen Geschwindigkeit abgezogen wird, und drückt den Charakter ebenfalls in Richtung des Ziels.
Diese Kräfte werden wie folgt berechnet:
gewünschte Geschwindigkeit = normalisieren (Zielposition) * max_velocity Lenkung = gewünschte Geschwindigkeit - Geschwindigkeit
Nachdem die Lenkkraft berechnet wurde, muss sie zum Zeichen addiert werden (sie wird zur Geschwindigkeitskraft addiert). Durch die Hinzufügung der Lenkkraft zur Geschwindigkeit jedes Rahmens verlässt der Charakter die alte gerade Route und bewegt sich in Richtung des Ziels, wobei a beschrieben wird Pfad suchen (orange Kurve in der Abbildung unten):
Die Addition dieser Kräfte und die endgültige Geschwindigkeits- / Positionsberechnung sind:
Lenkung = verkürzt (Lenkung, max_force) Lenkung = Lenkung / Massengeschwindigkeit = verkürzt (Geschwindigkeit + Lenkung, max_speed) Position = Position + Geschwindigkeit
Die Lenkkraft wird abgeschnitten, um sicherzustellen, dass die zulässigen Kräfte, die der Charakter aufnehmen kann, nicht überschritten werden. Auch die Lenkkraft wird durch die Charaktermasse geteilt, wodurch unterschiedliche Bewegungsgeschwindigkeiten für verschiedene gewichtete Charaktere erzeugt werden. Unten ist ein Test, der das Suchverhalten mit allen angewendeten Kräften zeigt:
Jedes Mal, wenn sich das Ziel bewegt, ist es jeder Charakter gewünschte Geschwindigkeit Vektor ändert sich entsprechend. Das Geschwindigkeit Der Vektor benötigt jedoch einige Zeit, um sich zu ändern und erneut auf das Ziel zu zeigen. Das Ergebnis ist ein sanfter Bewegungsübergang.
Lenkverhalten ist ideal, um realistische Bewegungsmuster zu erstellen. Die Hauptidee besteht darin, lokale Informationen zu verwenden, um Kräfte zu berechnen und anzuwenden, um die Verhalten zu erzeugen. Obwohl die Berechnung einfach zu implementieren ist, kann sie dennoch sehr komplexe Ergebnisse liefern.
In diesem Lernprogramm wurden die Grundlagen des Lenkverhaltens beschrieben und das Suchverhalten erläutert. In den nächsten Beiträgen werden wir mehr über Verhaltensweisen erfahren. Schauen Sie sich den nächsten Beitrag an: Flucht und Ankunft.