pathfinding

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • I meinem Spiel gibt es schwarze Punkte die sich verbinden, wenn ihr Abstand geringer als 130 ist (erkennbar an schwarzen linien). Nun möchte ich checken ob eine Verbindung von der Leuchte (rechts) und dem Generator (links) besteht. Es soll der kürzeste Weg (nicht entfernungsabhängig, sondern die verbindung mit den wenigsten Punkten) zwischen beiden gefunden werden, und die beteiligten Punkte sollen eine andere Farbe bekommen.
      Der Generator heißt: obj_start
      die Punkte: obj_p_leit
      die Leuchte obj_lampe
      Es kann natürlich auch passieren, dass mehrere Generatoren bzw. mehrere Lampen in einem Raum existieren, auch dann soll der richtige Weg für jede Lampe gefunden werden.
      Gar nicht so einfach, was?
      Die rote Linie im Bild habe ich nachträglich hinzugefügt, so in etwa sollte das Ergebniss aussehen.
      Bilder
      • Unbenannt.jpg

        56,74 kB, 948×586, 292 mal angesehen
    • mal ne frage zieht man mit der maus die punkte rein oder stehen die schon im raum?. Und verbinden sich die punkte selbst??oder muss man sie verbinden?

      Du machst das teil mit gm6 ja?
      Ich will wie mein Opa im Schlaf sterben, nicht heulend und schreiend wie sein Beifahrer.





      I am a in the GM Quiz! :heul: :vogel:

      :gmlove:

      xD
    • Fragen über Pathfinding gab es in letzter Zeit recht häufig. Dieser Algorithmus sollte dir weiter helfen: de.wikipedia.org/wiki/A*-Algorithmus
      Ich habe gerade mal auf der GMC nach Implementationen des Algorithmus' gesucht und zu meinem Erstaunen habe ich keinen einzigen gefunden, der wirklich auf allgemeinen Graphen arbeitet. Alle, die ich dort gesehen habe, waren nur für ein Gitter gedacht, dass man über das Spielfeld legte, genauso wie die gm-eigenen Funktionen dafür. Du musst den Algorithmus also selber implementieren oder nach Implementationen in anderen Programmiersprachen suchen. Da du hier im Expertenforum postest, nehme ich an, dass das im Bereich des Möglichen für dich liegt. ;)
    • Ich habe ne idee, die jetzt nicht so mathematisch ist.

      Jeder dieser Punkte bekommt einen wert, ob er nun angebunden ist. Da du ja für jeden Punkt ein Object hast, kannst du dem einfach eine varialbe zuteilen. Diese ist standart false.

      Nehmen wir an, du setzt jetzt zum ersten mal einen Punkt. Wenn dieser Punkt mit dem Generator verbindet, was du ja einfach checken könntest, wird seine variable true. Wenn jetzt ein weiteren Punkt gesetzt wird, knüpft der sich an den Punkt, den du gerade gesetzt hast. Sobald diese Verbindung steht, übernimmt seine varibale den wert von dem Punkt, an dem er angebunden ist. Wenn ein Punkt an mehre anbindet, und nur einer von denen true ist, übernimmt der true, also:

      Quellcode

      1. angebunden=nachbar1.abgebunden|nachbar2.angebunden|nachbar3.angebunden
      Dieser Wert muss jeden Step geupdatet werden!

      Wenn nun ein Punkt bei der Lampe ankommt, der angebunden==true ist, dann besteht eine verbindung!

      MfG SDX

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SDX ()

    • mal ne frage zieht man mit der maus die punkte rein oder stehen die schon im raum?. Und verbinden sich die punkte selbst??oder muss man sie verbinden?

      Du machst das teil mit gm6 ja?
      Die stehen schon im raum, aber man kann sie mit der maus umherbewegen. Immer dann wenn, die distanz zweier punkte kleiner als 130 ist werden sie verbunden, werden sie auseinadergezogen sodass die distanz größer 130 ist, werden sie wieder getrennt. Wenn die Punkte verbunden sind, streben sie immer eine Distanz von 100 an.
      Und nein, ich mach dass mit gm8. (muss ich noch im profil ändern).


      Ich habe ne idee, die jetzt nicht so mathematisch ist.

      Jeder dieser Punkte bekommt einen wert, ob er nun angebunden ist. Da du ja für jeden Punkt ein Object hast, kannst du dem einfach eine varialbe zuteilen. Diese ist standart false.

      Nehmen wir an, du setzt jetzt zum ersten mal einen Punkt. Wenn dieser Punkt mit dem Generator verbindet, was du ja einfach checken könntest, wird seine variable true. Wenn jetzt ein weiteren Punkt gesetzt wird, knüpft der sich an den Punkt, den du gerade gesetzt hast. Sobald diese Verbindung steht, übernimmt seine varibale den wert von dem Punkt, an dem er angebunden ist. Wenn ein Punkt an mehre anbindet, und nur einer von denen true ist, übernimmt der true, also:

      Quellcode
      1

      angebunden=nachbar1.abgebunden|nachbar2.angebunden|nachbar3.angebunden

      Dieser Wert muss jeden Step geupdatet werden!

      Wenn nun ein Punkt bei der Lampe ankommt, der angebunden==true ist, dann besteht eine verbindung!
      funktioniert deshalb nicht, weil sich die Punkte eben auch wieder trennen können.

      Fragen über Pathfinding gab es in letzter Zeit recht häufig. Dieser Algorithmus sollte dir weiter helfen: de.wikipedia.org/wiki/A*-Algorithmus
      Ich habe gerade mal auf der GMC nach Implementationen des Algorithmus' gesucht und zu meinem Erstaunen habe ich keinen einzigen gefunden, der wirklich auf allgemeinen Graphen arbeitet. Alle, die ich dort gesehen habe, waren nur für ein Gitter gedacht, dass man über das Spielfeld legte, genauso wie die gm-eigenen Funktionen dafür. Du musst den Algorithmus also selber implementieren oder nach Implementationen in anderen Programmiersprachen suchen. Da du hier im Expertenforum postest, nehme ich an, dass das im Bereich des Möglichen für dich liegt. ;)
      Ok ich versuch dass einfach mal, thx.