Weg findung wie in Anno

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

  • Weg findung wie in Anno

    Ich habe ein Problem mit der weg findung das sie anders funktionieren soll als sie eigentlich in der lage ist.
    Da die weg findung nur objekte umgehen kann wollte ich wissen ob man das umkehren kann.

    Also ich wollte das eine Figur von A nacg B läuft, aber nur auf denn vorgegebenen straßen läuft. Halt wie in anno wenn die Ware zum Kontor gebracht wird.
    Ich hatte schon ein ansatzt aber der garantier nicht das man am ziel ankommt.


    Mein momentaner versuch basierte auf der Untergrund suche.
    Sagen wir ein Kreuzung hat die bild_id 0 ein. eine wagerecht die bild_id 1
    Und wenn die Figur an einer Kreuzung ist und das ziel(x) > x dann soll er nach unten abbiegen. das geht auch
    nur wenn das ziel(x) < x (also weiter oben auf der karte dann kann er ja nicht weiter weil der weg nur nach unten geht.
    Man könnte zwar troz dem dem nach unten gehen , in der hoffnung das mal wieder ne kreuzung kommt aber die Figur weis trozdem nicht, ob irgend wann mal der richtige weg kommt wenn es denn einen gibt.

    GML-Quellcode

    1. if place_meeting(x,y,obj_weg)=true then
    2. {
    3. if instance_nearest(x,y,obj_weg).bild_id=6 and ziel_x>x then xgoal=x+16 //wagerechter weg
    4. if instance_nearest(x,y,obj_weg).bild_id=6 and ziel_x<x then xgoal=x-16 //wagerechter weg
    5. if instance_nearest(x,y,obj_weg).bild_id=5 and ziel_y>y then ygoal=y+16 //senkrechter weg
    6. if instance_nearest(x,y,obj_weg).bild_id=5 and ziel_y<y then ygoal=y-16 //senkrechter weg
    7. if instance_nearest(x,y,obj_weg).bild_id=7 and ziel_x<x then xgoal=x-16 //kurve links>>unten
    8. if instance_nearest(x,y,obj_weg).bild_id=7 and ziel_y>y then ygoal=y+16 //kurve links>>unten
    9. }

    Ich hab hier mal ein beispiel bild zur erklärung.

    Momentant wählt die figur je na weg arte(Gerade kurve oder Tkreuzung) wo sie lang geht. Im bezug auf die x,y Position des Zieles

    Da fällt mir gerad ein mann könnt es zwar etwas beser machen aber ob es dann 100% funktioniert weis ich auch nicht.
    Mann kööte zu mindestens abfragen ob in der lauf richtng eine weg art kommt die wieder einen abzweig zum ziel bietet.

    DH
    Wie im Bild. Wenn die Figur startet und bei 7 ist kann sie nicht runter weil ziel(x)<x aber mann könnte prüfen obe unten doch mal wieder ein abzweig kommt. in dem falle die kurve Nr9.
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Ich hätte da eine Idee. Man könnte das mit den mp_grid Funktionen realisieren. Erstelle mit mp_grid_create() ein Gitter mit der Zellenbreite und -höhe der Weg-Objekte über und setzte mit mp_grid_add_rectangle() alle Felder auf besetzt. Die Weg-Objekte können dann die Zelle, auf der sie sich befinden freigeben und bei der mp_grid_path() Funktion würden nur die Zellen, auf denen sich ein Weg-Objekt, berücksichtigt werden.

    mfG phate
  • Danke für den tip

    Erst mal danke für den tip. Ich habe es mal in einem kleinem test probiert. Und es Funktioniert. das objektläuft nun auf dem weg. jetzt noch ein paar kleinig keiten und ich kann es ins spiel einbauen.
    Großes danke. Path ist nicht so meine stärke gewesen.
    anno_wegfindung.zip Funtioniert ganz gut. wen kein weg direckt neben dem (grünen test haus) ist geht er auch nicht los also muss eine direckt weg anbindung sein.

    Weis jemand ob man die draw farbe der mp_draw_grid funktion ändern kann. Das rot mach ein ja irre
    Meine Signatur hat kein Visum für das GM Forum erhalten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von x-sascha ()