Strooja0108 Geschrieben 20. August 2019 Melden Share Geschrieben 20. August 2019 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 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 20. August 2019 Melden Share Geschrieben 20. August 2019 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 More sharing options...
Strooja0108 Geschrieben 20. August 2019 Autor Melden Share Geschrieben 20. August 2019 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 More sharing options...
Sascha Geschrieben 20. August 2019 Melden Share Geschrieben 20. August 2019 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 More sharing options...
Strooja0108 Geschrieben 20. August 2019 Autor Melden Share Geschrieben 20. August 2019 Cool danke.Ja genau zurzeit sind meine Waypoints alles GameObjects. Wo finde ich denn so einen Pathfinding Algorithmus? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 20. August 2019 Melden Share Geschrieben 20. August 2019 Hier sind ein paar gelistet: https://de.wikipedia.org/wiki/Kürzester_Pfad Der üblichste Algorithmus für dein Problem ist der Dijkstra-Algorithmus. Der ist auch vergleichweise noch recht einfach zu implementieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Strooja0108 Geschrieben 20. August 2019 Autor Melden Share Geschrieben 20. August 2019 Danke werde ich mir mal angucken. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.