Jump to content
Unity Insider Forum

Character soll einem Pfad folgen


Strooja0108

Recommended Posts

Hi Leute,

ich bins mal wieder. Heute habe ich eine frage zum erstellen von pfaden für meinen Character. Anbei seht ihr ein Bild das ungefähr dasrstellt was ich habe . Die roten Punkte sind Waypoints zu dem der Character gehen darf.Er soll nicht abkürzen sondern darf nur über die Waypoints zu anderen punkten kommen.Zum Beispiel wenn er auf Waypoint 1 steht und zu 7 läuft muss er Punkt 2,3 und 5 passieren. Das ganze soll wie bei einem Point and Click funktionieren halt nur das er festgelegte Wege im Raum laufen darf .In diesem Fall sind die Waypoints 1,4,6,7,8 Objekte auf die man draufklicken kann und sobald man das getan hat soll der Character von seiner aktuellen Position dorthin laufen. Hat irgendjemand eine gute Idee um sowas smart zu lösen. Ich habe zurzeit dieLösung das ich für jedes Objekt wo er hinlaufen kann eine Art pfad gebaut habe .Sobald man ein Objekt anklickt wird überprüft auf welchem Waypoint sich der Character befindet und and welcher Stelle sich dieser Waypoint auf dem pfad zu dem Objekt befindet. Danach werden die Waypoints die nach dem aktuellen kommen einfach nur abgelaufen. DAs ist ne menge code und für jedes neue Object wirkt es unübersichtlicher obwohl ich schon einige Methoden dafür benutze.

 

Ich wäre über jede Hilfe dankbar

PathExample.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 44 Minuten schrieb Strooja0108:

DAs ist ne menge code und für jedes neue Object wirkt es unübersichtlicher obwohl ich schon einige Methoden dafür benutze.

Das klingt irgendwie, als würdest du für jedes neue Objekt zusätzlichen Code schreiben? Wenn ja: Das ist auf jeden Fall nicht richtig so. Wie definierst du denn aktuell deine Punkte und deren Verbindungen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jepp das mach ich leider gerade so. Die Verbindung besteht nur in Arrays.Zum Beispiel das Object bei WP1 hat ein patharray welches so lautet[WP5,WP3,WP2,WP1].Wenn die Figur zum Beispiel bei WP8 steht überprüfe ich welcher Punkt vom Hauptpfad(5,3,2,1) am nächsten ist. Dann schicke ich die Figur erst zum diesem Punkt hin und gucke dann an welcher stelle des patharray sich die Figur gerade befindet und lasse sie dann die restlichen Punkte ablaufen.Seeeehr umständlich alles ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nehmen wir mal an, deine Wegpunkte sind GameObjects mit je einer "Waypoint"-Komponente dran. Dann kannst du der Klasse eine Array-Feld geben, in dem alle Wegpunkte drinstehen, zu dem der Character von dort aus kann:

public Waypoint[] connectedWaypoints;

Da kannst du dann andere Wegpunkte einfach im Inspektor reinziehen.

Dann kannst du noch eine hübsche OnDrawGizmos-Methode basteln, die dir visualisiert, wie die Punkte verbunden sind:

private void OnDrawGizmos()
{
  // Nur sicherheitshalber...
  if (connectedWaypoints == null) return;
  
  Gizmos.color = Color.blue;
  
  foreach (var waypoint in connectedWaypoints)
  {
    Gizmos.DrawLine(transform.position, waypoint.transform.position);
  }
}

Und jetzt kannst du einen beliebigen Pathfinding-Algorithmus über alle deine Waypoints drüberlaufen lassen und brauchst nie wieder deinen Code erweitern, egal wie groß das Netz wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...