Darkkingdom Geschrieben 18. September 2014 Melden Share Geschrieben 18. September 2014 Hallo Zusammen alsooo wie ich in einem etwas älteren Thread geschrieben habe benutze ich für mein 2D Game "NavMesh2d" als Pathfindingsystem. Mittlerweile funktioniert das ganze auch gut. Blöderweiße stehe ich nun vor dem nächsten Problem Und zwar überlappen sich meine 2D Box Collider, vielleicht hilft das Bild hier um es deutlicher zu machen: Der Baum stellt für mein Pathfinding das Hindernis dar und der Dämon ist wie zu erwarten der Enemy. Sobald der Enemy zu nahm am Baum vorbei läuft überlappen sich die Box Collider zu stark und er steckt fest Ich vermute das Hauptproblem liegt am NavMesh Scirpt bloß bei den untiefen deren Libarys blick ich absolut nicht mehr durch xD Nun ist meine Frage ob ich das ganze auch so lösen kann, gibt es eine Methode um prinzipiell zu verhindern das sich Boxcollider überlappen? Ich freue mich schon auf eure Antworten Danke euch! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HeadWorker Geschrieben 19. September 2014 Melden Share Geschrieben 19. September 2014 Hallo, ich kenne NavMesh2D jetzt nicht, aber folgende Sachen könnten weiterhelfen: Musst du BoxCollider für deine Agenten (d.h. Einheiten die Pathfinding nutzen) benutzen? -> Wenn nicht, tausch mal den BoxCollider gegen etwas Abgerundetes (Sphere/Capsule bzw. Circle2D Collider) aus. -> Wenn ja, hilft es vielleicht (zumindest wenn du 2D Collider benutzt) Compound Collider 2D zu benutzen, d.h. mehrere BoxCollider auf einer Einheit, mit der du die Silhouette "nachmalen" kannst. Eventuell könnte ein Physics-Material den Einheiten zu einem "gleitenden" Verhalten verhelfen. Wahrscheinlich ist, dass die Toleranz bei der PfadSuche irgendwo in dem Tool (NavMesh2D) eingestellt werden kann. Und zwar nicht im Code, sondern bei der NavMeshErstellung. Wenn dir das alles nicht weiterhilft, poste bitte den Bewegungscode deiner Einheiten, vielleicht kann man da was machen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 21. September 2014 Autor Melden Share Geschrieben 21. September 2014 Hey HeadWorker, also erstmal danke für den super Post! Es ist mit NavMesh2d auch möglich andere Formen zu verwenden. Blöderweise bringen die auch keinen Unterschied Auch ein Material hilft nicht weiter. Nachdem du das mit der Toleranz erwähnt hast hab ich mich ein bisschen im NavMesh umgeschaut und siehe da es gibt wirklich eine Option für das "Padding" (also Abstand zum Objekt) Nunja mittlerweile denke ich das ich sogar 2 Probleme habe, bzw das dass Feststecken gar nichts mit den Collidern zu tun hat So wie der Enemy auf dem Screenshot steht müsste er mich eigentlich weiter verfolgen aber er steckt fest, obwohl sich die Collider ja gar nicht überschneiden Ich poste euch mal mein Pathfinding was am Enemy GO angehängt ist. Vielleicht seht Ihr ja etwas mit dem man meine beiden Probleme, das überschneiden der Collider und das Feststecken beheben kann void Update () { if (reachedTarget == false && Vector2.Distance (transform.position, pathingTarget.position) < 8.0f) { path = NavMesh2D.GetSmoothedPath (transform.position, pathingTarget.position); } else { if(path != null && path.Count != 0){ path.Clear (); } } if (path != null && path.Count != 0) { if (Vector2.Distance (transform.position, path [0]) < 0.01f) { path.RemoveAt (0); } if (path != null && path.Count != 0 && reachedTarget == false) { transform.position = Vector2.MoveTowards (transform.position, path [0], 2f * Time.deltaTime); } } } Auf offener Fläche funktioniert das so auch Super nur eben nicht bei Hindernissen Würde mich sehr über Hilfe freuen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HeadWorker Geschrieben 23. September 2014 Melden Share Geschrieben 23. September 2014 Moin, da muss ich später noch genauer schauen, bzw heute nachmittag, aber eine Sache könntest du noch versuchen: Gute Idee, immer wenn man mit Pathfinding/AI zu tun hat: Debug Lines. Anfangen kannst du mit if (path[0] != null) { Debug.DrawLine(transform.position, path[0], Color.Red,0.1f) } Pack das mal in die Update Funktion vom Gegner. Dann kannst du schon mal sehen wo der eigentlich hinwill. Wenn da alles stimmt, müssen wir weiterschauen. Eine Frage noch: Warum wird der aktuelle Path gelöscht, wenn der Feind weiter als 8 Units vom Spieler entfernt ist? Ist das deine Aggrorange? Edit: Im Playmode nicht vergessen "Gizmos" zu aktivieren, damit du die Debug Line sehen kannst! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 23. September 2014 Autor Melden Share Geschrieben 23. September 2014 Hey HeadWorker, alsooo das mit dem drawLine hab ich getestet. Ist echt ne super Sache^^ Zum Problem: Es ist so das sobald er feststeckt wird gar keine Line mehr gedrawed. Und jup die 8 float sind meine Aggrorange^^ Freue mich sehr das du mir weiterhelfen willst Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HeadWorker Geschrieben 23. September 2014 Melden Share Geschrieben 23. September 2014 Moin ich hab deine PN bekommen. Deaktivier als nächstes mal bitte den Collider auf dem Gegner, und wenn dies nicht möglich ist mach den mal ganz klein, schauen wir mal was passiert. Problem hier, ich kann die Schritte nicht so gut nachvollziehen, da ich das Tool nicht habe, müssen wir jetzt ein bisschen im Nebel stochern EDIT: Wenn du NavMesh2D von PigeonCoop hast: - Mach mal das Navmesh nochmal neu, aktivier "Bake Grid" mit Vector2 (0.5, 0.5). - Ist der Setup am Anfang mit den Layers korrekt? Also getrennte Wall / Floor Layers und die Objekte auch richtig zugewiesen? - Kannst du ein Screenshot von deinem Navmesh nach dem Baken posten? - Hast du nach dem Baken mit dem Tester rumgespielt, um dein Navmesh zu testen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 24. September 2014 Autor Melden Share Geschrieben 24. September 2014 Hey HeadWorker, also den BoxCollider am Enemy bauch ich für andere Scripts, aber auch wenn der deaktivert ist steckt der Enemy trotzdem fest Genau das NavMesh2D von PigeonCoop^^ 0,5,0,5 bringt leider auch keine veränderung Hier wäre ein Screenshot des NavMesh und nochmal die selbe aufnahme ohne das Mesh dafür mit Pathtester^^ Und sag mal hast du dir echt extra für mich ein NavMesh2d Turorial gegönnt?^^ Bist echt der größte^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 24. September 2014 Melden Share Geschrieben 24. September 2014 Ich hab den Thread nur so Rande beobachtet... ich habe das Gefühl, hier fehlt ein grundlegende Kleinigkeit zu NavMeshes. Du generierst die Dinger ja mit einem Border-Wert. Dieser Wert stellt den Abstand zwischen den Punkten um den Collider des Baumes und dem Collider selbst da. Diesen Wert gibt es nicht ohne Grund: NavMeshes sind nicht dafür vorgesehen, dass Agenten unterschiedlicher Größe darüber laufen. Stattdessen wird das NavMesh direkt für Agenten mit Radius <Border> berechnet. Die Agenten laufen dann mit ihrem Mittelpunkt immer bis zum Rand des NavMeshes und berühren nie die Collider, da das NavMesh ja genau so weit vom Collider weg ist wie der Radius des Agenten. Ich hoffe nur, die ganze Erklärung war nicht für den Allerwertesten, weil dein Asset jetzt mit dem Standard bricht oder so Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HeadWorker Geschrieben 24. September 2014 Melden Share Geschrieben 24. September 2014 Aufbauend auf Saschas Kommentar könntest du mal versuchen entweder das Padding massiv zu erhöhen, oder den feurigen Freund auf Spielergröße zu verkleinern, bzw. auch mal kleiner zu Test. Und das Navmesh Tutorial hat sich auch für mich gelohnt, ich bin im Moment mit Simply Astar 2D Mode nicht so zufrieden, selber programmieren mach auch keinen Spass mehr (rekursive Funktionen kotzen mich an ) also vielleicht kauf ich das mal später. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 25. September 2014 Autor Melden Share Geschrieben 25. September 2014 Hey Sacha & HeadWorker^^ ich muss zugeben das mit der Größe des Agenten und dem Radius um das Objekt hab ich bisher nicht ganz bedacht. (Wieder was gelernt ) Blöderweise scheint es auch das nicht zu sein Auch ein riesiger Border und winziger Enemy hilft nichts. Er steckt trotzdem an den Kanten festen. Hier auch mal ein Screenshot meiner NavMesh Einstellungen wenns weiterhilft^^ Übrigens gibt es ja die Option "JoinType" die auf den Screenshots auf Square eingestellt ist, auch die Option Round bringt nichts er verhängt sich trotzdem an den abgerundeten Ecken @HeadWork: Verstehe ich^^ Eigentlich kann ich bis auf das bekannte Problem NavMesh2d nur empfehlen. Die Interfaces sind super! Und 15 Euro sind echt nicht die Welt^^ Hoffe Ihr gebt mich und mein Problem nicht auf ------------------------------------------------------------------------------------------- EDIT: Hab gerade noch etwas rumprobiert und herrausgefunden das, dass Feststecken mit der Join Option "miter" (also Vierecke) am seltesten vorkommt. Das komische ist bloß das er hier, wenn er feststeckt, das er nicht an der Ecke feststeckt, sondern an genau der selben Stelle wo vorher mit der Square funktion die Ecke war o.O Siehe: Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. September 2014 Melden Share Geschrieben 25. September 2014 Sind die beiden Collider auf dem Bild die einzigen Beiden in der Szene? Ich habe das Gefühl, dass da irgendwie mehr Collider im Spiel sind. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 26. September 2014 Autor Melden Share Geschrieben 26. September 2014 Hey Sascha, ja da hast du recht^^ Es gibt in dem Level 2 weitere 2dBoxcollider. Einem am Charakter und einem am Background. Der am Background wird von NavMesh2D auch benötigt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HeadWorker Geschrieben 26. September 2014 Melden Share Geschrieben 26. September 2014 Ich denke mal der Background Collider ist Trigger, wie das muss? Was du zum Debuggen auch gut machen kannst, ist alle GameObject in der Scene unter einen gemeinsamen Parent zu schieben (Root-Object) und dann im PlayMode Gizmos einzuschalten, dann solltest du alle Collider in der Scene sehen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Darkkingdom Geschrieben 3. Oktober 2014 Autor Melden Share Geschrieben 3. Oktober 2014 Hey entschuldigt die späte Antwort^^ (Arbeit und so x.x) Ja der Background ist trigger^^ Mhhh leider sieht das ganz auch mit einem Parent nicht anders aus. Bzw. es gibt keine aufähligen Collider oder so Ich hoffe das es überhaupt eine Lösung für mein Problem gibt^^ 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.