Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Programming

Verständnis Lenkung Verhaltensweisen: Pfad im folgenden

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Understanding Steering Behaviors.
Understanding Steering Behaviors: Collision Avoidance
Understanding Steering Behaviors: Leader Following

German (Deutsch) translation by Max Benjamin (you can also view the original English article)

Pfad folgende ist ein häufiges problem in der Spiele-Entwicklung. Dieses tutorial behandelt die folgenden Pfad Lenkverhalten, das können Zeichen Folgen einem vorgegebenen Pfad aus Punkten und Linien.

Hinweis: Obwohl dieses tutorial ist geschrieben mit AS3 und Flash, sollten Sie in der Lage, verwenden Sie die gleichen Techniken und Konzepte, die in fast jedem Spiel-Entwicklungsumgebung. Sie müssen ein grundlegendes Verständnis für mathematische Vektoren.


Einführung

Ein Pfad folgende Verhalten kann auf vielerlei Weise implementiert werden. Die original Reynolds-Implementierung verwendet einen Pfad, der aus Linien, wobei die Zeichen Folgen Sie streng, fast wie ein Zug auf Schienen.

Je nach der situation, eine solche Präzision kann nicht verlangt werden. Ein Charakter bewegen kann entlang eines Pfades folgenden Zeilen ein, aber verwenden Sie Sie als Referenz, nicht als Schienen.

Die Umsetzung von Pfad folgende Verhalten in diesem tutorial ist eine Vereinfachung des Originals von Reynolds vorgeschlagen. Es produziert immer noch gute Ergebnisse, aber es nicht verlassen sich auf schwere mathematische Berechnungen wie Vektor-Projektionen.


Definieren Sie einen Pfad

Ein Pfad kann definiert werden als eine Menge von Punkten (Knoten), die durch Linien verbunden. Obwohl-Kurven kann auch verwendet werden, einen Weg zu beschreiben, Punkte und Linien sind einfacher zu handhaben und produzieren fast die gleichen Ergebnisse.

Wenn Sie brauchen, um verwenden Sie Kurven, Sie können reduziert werden, um eine Reihe von zusammenhängenden Punkten:


Kurven und Linien.

Der class-Path wird verwendet, um zu beschreiben, die route. Im Grunde, das hat Klasse, die den Vektor der Punkte und eine paar Methoden zur Verwaltung der Liste:

Jeder Punkt in dem Pfad wird ein Vector3D-repräsentiert eine position im Raum, auf die gleiche Weise der Charakter die Eigenschaft " position arbeitet.


Verschieben Von Knoten zu Knoten

Um zu navigieren dachte, der Weg, die Charakter bewegen sich von Knoten zu Knoten, bis Sie das Ende der route.

Jeder Punkt kann man den Pfad als Ziel, so dass die seek-Verhalten verwendet werden können:

Suchen Sie einen Punkt nach dem anderen.

Der Charakter wird sich bemühen, den aktuellen Punkt bis es erreicht ist, dann den nächsten Punkt im Pfad wird das aktuelle und so weiter. Wie zuvor beschrieben in die Kollisionsvermeidung tutorial, jedes Verhalten die Kräfte neu berechnet, jedes Spiel zu aktualisieren, so dass der übergang von einem Knoten zum anderen ist nahtlos und glatt.

Der Charakter ist Klasse benötigt noch zwei weitere Eigenschaften auf das instrument der navigation: der aktuelle Knoten (die, die das Zeichen zu suchen) und eine Referenz auf den Pfad, gefolgt. Die Klasse sieht wie folgt aus:

Die pathFollowing () - Methode ist verantwortlich für die Generierung der Pfad nach Kraft. Derzeit produziert es keine Kraft, aber es funktioniert wählen Sie die Ziele richtig.

Der Pfad != null-test prüft, ob das Zeichen ist die nach einem Pfad. Wenn das der Fall ist, die currentNode Eigenschaft wird verwendet, um die aktuelle Ziel (das man das Zeichen suchen muss) in der Liste der Punkte.

Wenn der Abstand zwischen dem aktuellen Ziel und den Charakter der position ist weniger als 10, es bedeutet, dass der Charakter erreicht hat, ist der aktuelle Knoten. Wenn das passiert, currentNode wird um eins inkrementiert, was bedeutet, der Charakter wird sich bemühen, den nächsten Punkt im Pfad. Der Prozess wird wiederholt, bis der Pfad läuft out-of-Punkte.


Die Berechnung und das Hinzufügen Kräfte

Die Kraft verwendet, um die push-Charakter gegen jeden Knoten in dem Pfad ist die Kraft suchen. Die pathFollowing () - Methode bereits wählt die entsprechenden Knoten, so dass es jetzt zurückgeben muss, eine Kraft, schieben die Zeichen in Richtung auf die Knoten:

Nachdem der Pfad nach der Kraft berechnet, es muss Hinzugefügt werden, um den Charakter der velocity-Vektor wie gewohnt:

Der Pfad nach steering force ist sehr ähnlich zu der Verfolgung Verhalten, wo der Charakter ständig passt seine Richtung zu fangen ist das Ziel. Der Unterschied liegt darin, wie der Charakter sucht ein Unbewegliches Ziel, das wird ignoriert zu Gunsten eines anderen ein, sobald der Charakter zu nahe kommt.

Das Ergebnis ist die folgende:

Pfad folgenden in Aktion. Klicken Sie auf, um zu zeigen, Kräfte.

Glätten der Bewegung

Die aktuelle Implementierung erfordert, dass alle Zeichen auf "touch" der aktuelle Punkt in dem Pfad, um zu wählen das nächste Ziel. Als eine Konsequenz, die ein Charakter durchführen kann unerwünschte Bewegungsmuster, wie Sie bewegten sich in Kreisen um einen Punkt, bis es erreicht ist.

In der Natur, jede Bewegung neigt dazu, zu gehorchen dem Prinzip der geringsten Anstrengung. Zum Beispiel, eine person wird nicht wandeln in der Mitte des Korridors; wenn es eine Wendung, die person zu Fuß, eng an die Wände, während Sie in der Reihenfolge, den Abstand zu verkürzen.

Das Muster kann wiederhergestellt werden, indem ein radius um den Pfad. Der radius wird angewendet, um die Punkte und es kann gesehen werden als die route "Breite". Es wird die Kontrolle wie entfernt ein Charakter kann sich von der Punkte auf den Weg geben:

Einfluss des radius auf folgenden Pfad.

Wenn der Abstand zwischen dem Charakter und der Punkt ist weniger als oder gleich dem radius ist, wird der Punkt als erreicht. Als Konsequenz sind alle Charaktere bewegen mit den Linien und Punkte als guides:

Pfad nach über radius. Klicken Sie auf die "Force" - Taste, um Kräfte. Klicken Sie auf die "+" und "-" Tasten, um dynamisch anpassen und die radius-Größe.

Je größer der radius, desto größer die Strecke und je größer der Abstand der Zeichen bleiben die Punkte beim drehen. Der Wert des radius verändert werden können, um verschiedene folgenden Muster.


Hin und Her

Manchmal ist es nützlich, die eine Figur in Bewegung zu halten, nachdem es erreicht das Ende des Pfades. In einem patrol-Muster, zum Beispiel, die Charakter sollten wieder zurück zum Anfang der Strecke, nachdem er das Ende erreicht, nach dem selben Punkte.

Dies kann erreicht werden, indem die pathDir-Eigenschaft auf den Charakter der Klasse; dies ist ein integer, der steuert, in welche Richtung sich der Charakter bewegt sich entlang des Pfades. Wenn pathDir 1 ist, bedeutet, dass der Charakter bewegt sich auf das Ende des Weges; -1 kennzeichnet eine Bewegung Richtung start.

Die pathFollowing () - Methode kann geändert werden, um:

Im Gegensatz zu der älteren version, wird der Wert von pathDir ist jetzt Hinzugefügt, um die Eigenschaft currentNode (anstatt einfach hinzufügen 1). Dies ermöglicht es den Charakter wählen Sie den nächsten Punkt in den Pfad basierend auf der aktuellen Richtung.

Nach einem test wird überprüft, ob der Charakter erreicht hat das Ende der route. Wenn das der Fall ist, pathDir wird mit -1 multipliziert, die invertiert seinen Wert, so dass die Zeichen umkehren der Bewegungsrichtung als auch.

Das Ergebnis ist ein hin-und-her-Bewegung Muster:

Pfad folgenden mit radius und hin-und-her-Muster. Klicken Sie auf die "Force" - Taste, um Kräfte. Klicken Sie auf die "+" und "-" Tasten, um dynamisch anpassen und die radius-Größe.

Fazit

Der Pfad folgt Verhalten ermöglicht jedem Charakter, sich zu bewegen entlang einem vorgegebenen Pfad. Die route orientiert sich an der Punkte-und es kann individuell eingestellt werden breiter oder schmaler, Herstellung Bewegungsmuster, die mehr natürliches Gefühl.

Die Umsetzung in diesem tutorial ist eine Vereinfachung des ursprünglichen Pfad folgende Verhalten vorgeschlagen von Reynolds, aber es produziert immer noch überzeugende und ansprechende Ergebnisse.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.