multiples mp_grid_path

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

  • multiples mp_grid_path

    hi... kämpfe da gerade mit nem beispiel für ne rts...
    mein problem ist das ich meine soldaten mit mp grid antreibe.
    das heisst das jeder soldat sein eigenen path macht aber die laufen iwie zusammen.
    kennt da jemand ne anständige lösung ?

    mfg. CodeCrusher

  • du könntest jeder Einheit einen Rang zuweisen(Vorzugsweise 2dimensional) und diesen als Koordinaten für einen Table mp_grid (ds_grid?) benutzen, um offsets für x und y auszulesen. Das wäre der simpelste Weg um eine Gruppierung zu erstellen, du müsstest halt nur das grid vorher genügend groß erstellen (10x10 reicht für 100 Einheiten), damit nur ausgelesen werden muss. Diese Koordinaten addierst du dann auf die Zielkoordinaten der Paths. Etwas Komplizierter aber meines Erachtens besser wäre wenn du das ganze nur emulierst da die Offsets sowieso linear verlaufen. Also berechnest du sie nur auf Grund des 2d Rangs, somit kannst du 1. unbegrenzte Einheiten supporten und 2. verbrauchst du keinen Speicher und musst vorher keinen Table anlegen.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Die Einheiten könnten beim Selektieren einer Ordnung unterliegen, sagen wir Einheit (E) 1 bekommt px = 0; py = 0; zugewiesen, E2 dann px = 1; py = 0; E3 px = -1; py = 0; E4 px = 0; py = 1; E5 px = 0; py = -1; E6 px = 1; py = 1; E7 px = -1; py = 1; usw. Dann musst du diese Werte nurnoch mit einem Offset multiplizieren. Ich arbeite eigentlich nie mit den Paths, das sollte aber klappen.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • hey.. danke ^^
    schlafen tust aber auch nie ^^
    edit:kleines update... ist eher dumme lösung.... mir fehlt die erfahrung mit sowas ^^




    collisionscode mit anderen soldat^^

    GML-Quellcode

    1. randomize();
    2. if path_position>0.95
    3. {
    4. path = path_add();
    5. if x< other.x
    6. {
    7. randx=x-16
    8. randy=y
    9. }
    10. if x> other.x
    11. {
    12. randx=x+16
    13. randy=y
    14. }
    15. if y< other.y
    16. {
    17. randx=x
    18. randy=y-16
    19. }
    20. if y> other.y
    21. {
    22. randx=x
    23. randy=y+16
    24. }
    25. mp_grid_path(global.grid, path, x, y, randx, randy, 1)
    26. path_set_kind(path, 1);
    27. path_set_precision(path, 8);
    28. path_start(path, 1, path_action_stop, 1);
    29. }
    Alles anzeigen


    mfg. CodeCrusher

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von CodeCrusher ()

  • Man könnte auch, damit die nicht auf einer Linie herum laufen die Path Punkte mit einer For-Schleife immer random verrücken.
    Müsstest du dann aber in der Schleife mit abchecken, ob da eine Wand ist, damit der nicht durch die Wand läuft.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Hmm... du kannst ja theoretisch jedem Objekt eine Position in der Formation geben.
    die wandern dann alle dahin und laufen gemeinsam zum angegebenen Punkt.
    Blöd ist dann nur, wie man das am besten macht, wenn da eine Wand ist und die dann da durch laufen.

    Sonst kannst du ja im Objekt immer stepweise schauen lassen, ob an einem Punkt, der 100 Pixel entfernt ist, eine Wand ist. Wenn ja, dann laufe Schräg so, dass du auf die Line kommst, bevor er die Wand berührt.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • ja nur da hab ich problem da manche objekte(soldaten) zerstört werden und neue generiert..... fix kann ich da mal nicht zuweissen

    edit: habs mal so gelöst(neue random position suchen)
    man kann als ausrede benutzen das insekten dumm sind

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

  • hier mal pseudocode

    GML-Quellcode

    1. dest_x = ?
    2. dest_y = ?
    3. max_width = ?;
    4. max_height = ?;
    5. width_offset = ?;
    6. for (i = 0; i < max_height; i++) {
    7. for (j = 0; j < max_width; j++) {
    8. var pos_x = dest_x - floor(max_width/2) + j*width_offset;
    9. var pos_y = dest_y - floor(max_height/2) + i*width_offset;
    10. if (place_free(pos_x,pos_y)) {
    11. //move to pos
    12. }//sonst wird position übersprungen
    13. }
    14. }
    Alles anzeigen

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: