Room in x und y Achse wiederholen.

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

  • Room in x und y Achse wiederholen.

    Hallo Leute,

    hat jemand eine Idee wie man einen Room endlos in beide Achsen wiederholen kann.
    Damit meine ich, wenn man z.b. immer nach oben läuft, kommt man irgendwann wieder am Anfangspunkt an, praktisch als würde man einen Planeten komplett umlaufen.
    Gruß
  • Also auf die einfachste Art und Weise kannst du natürlich den Spieler ganz nach links teleportieren, sobald er rechts raus geht. Das gleiche eben auch, wenn du links raus gehst, dass du nach ganz rechts teleportiert wirst.

    Ich schätze aber mal, dass du während dem gesamten Laufen in der Mitte zentriert sein willst und hinter dem Ende des Levels wieder den Anfang siehst.
    So dass man dann, wenn man ganz am Ende ist trotzdem noch in der Mitte steht, links das Ende des Levels sieht, rechts wieder den Anfang.

    Das Problem hatte ich früher auch mal, konnte es nicht lösen, aber vielleicht hilft dir dieser Ansatz:
    Die Lösung mit dem Teleportieren kannst du gut übernehmen.
    Zusätzlich nimmst du dir noch zwei Views. Der eine filmt den Anfang des Levels ab, den du dann ganz am Ende hinter dem Level anzeigst. Ensprechend auch andersherum:
    Bilder
    • Wiederholendes Level.png

      17,63 kB, 1.766×318, 353 mal angesehen
    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
  • @Husi012

    Danke für die schnelle Antwort. Genau, ich wollte das ganze am besten übergangslos... Aber mit dem teleportieren hast du mich auf eine Idee gebracht die ausreichen sollte. Mit den Views hört sich recht kompliziert an, wird aber wohl die eleganteste sein.

    Gruß und danke!
  • Wenn es an den Rändern interaktive/bewegliche Objekte gibt ist die Lösung mit zwei-vier Views in den Randbereichen wohl am einfachsten.

    Wenn es nur um einen statischen Background geht (Weltkarte bei einem JRPG), könnte man die Ränder auf den gegenüberleigenden Seiten wiederholen, sodass man die plötzliche Teleportation nicht bemerkt.

    Beim schreiben merk ich grad, dass es auch bei Views wohl das Problem geben kann, wenn bewegliche Objekte genau mitten auf dem Übergang stehen. Da müsste man wohl alle Objekte die genau auf der Grenze stehen doppelt drawen, einmal am linken und einmal am rechten Roomrand. Und wenn man das macht funktionieren beide oben genannten Lösungen gleich gut.
  • @TrunX
    Ja es gibt Gegner die den Spieler im Level verfolgen, also es handelt sich nicht um eine Worldmap.

    Also das mit den Views stell ich mir echt zu kompliziert vor...
    Mein Plan war jetzt folgender:
    Ich erweitere den Room über seinen eigentlichen Rand hinaus (Denke so wie du es mit der Worldmap gedacht hast), damit der Spieler trotzdem immer im Mittelpunkt steht. Den erweiterten Bereich kann man aber nicht betreten, dort spiegelt sich dann schon die gegenüberliegende Seite wieder... Befindet man sich am eigentlichen Rand wird man mit einem kleinen Fade In/Out - Effekt auf die andere Seite teleportiert. Mit den Gegnern passiert dann das selbe. Ich denke es macht nichts wenn man den Teleport etwas registriert.
    Danke und Gruß
    [list]
    [/list]

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

  • ich denke du brauchst da kein FadeInOut. Einfach um die Breite/Höhe des Rooms verschieben, wenn die Grenze überschritten wird.
    Und bei den Gegnern das Draw-Event erweitern:

    GML-Quellcode

    1. draw_self();
    2. if x<0+sprite_width/2 //wenn am linken rand
    3. {
    4. draw_sprite(x+room_width,y) //rechts spiegeln
    5. }
    6. else if x>room_width-sprite_width/2 //rechter rand
    7. {
    8. draw_sprite(x-room_width,y) //links spiegeln
    9. }

    als Beispiel für den horizontalen Rand.