Jump to content
Unity Insider Forum
Sign in to follow this  
Strooja0108

Character soll einem Pfad folgen

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

Share this post


Link to post
Share on other sites
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?

  • Like 1

Share this post


Link to post
Share on other sites

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 ^^

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...