Maps wie in einem rollen spiel

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

  • Maps wie in einem rollen spiel

    Hallo liebe Gemeinde,

    ich habe zur zeit ein Projekt wo ich an einer bestimmten stelle hänge. Ich hab eine Stadt diese Stadt habe ich jetzt in 4 Räume geteilt und hab pro Raum mehrere Möglichkeiten raus zu laufen.
    Ich möchte nun zwischen den Räumen wechseln können in dem ich den jeweiligen raum verlasse, wie bei einem RPG, z.B. wenn ich den Raum 1 von Links verlasse will ich die selbe höhe (y) im darauf folgen dem Raum haben aber nun mal auf der rechten seite anfangen und wenn ich hochlaufe halt dem entsprechend dort nur wie soll ich die räume machen das dies zu bewerkstelligen ist usw. habt ihr einen ansatz bzw. eine lösung ?

    ich verwende den GM 8.0 und arbeite mit GML

    Danke im voraus
    Mit freundlichen Grüßen
    Megabyte-Network
  • Setze das Häckchen bei "Persistent" bei der Spielfigur, damit das selbe Objekt Raumübergreifend existiert.
    Beim Raumwechsel behält es so seine alte Position bei. Wenn du jetzt mit einem Raumwechsel-Objekt, dass am rechten oder linken Rand platziert ist kollidierst musst du nur die x-position anpassen und bei einer Kollision mit einem oben oder unten nur die y-position.

    Statt für jeden einzelnen Raumwechselbereich ein eigenes Objekt zu erstellen, würde ich ein einziges machen und diesem mittels Creation-Code (Rechtsklick im Room-Editor) den Zielraum und die Zielkoordinaten mitteilen)
  • Hier eine mögliche Umsetzung:

    Ein Objekt "obj_room_change" erstellen, ohne irgendwelchen Codes. Als Sprite kannst du diesem einfach ein (transparentes einfarbiges) 32*32 Quadrat, oder was auch immer dein verwendetes Grid ist zuweisen.

    Nachdem platzieren im Room-Editor (Da kannst du das Objekt theoretisch auch skalieren um einen variablen Bereich abzudecken) im Creation-Code folgendes reinschreiben:

    GML-Quellcode

    1. next_room=room_blabla;
    2. next_x=960;
    3. next_y=1080;

    Raumname und Koordinaten natürlich entsprechend anpassen.

    Im Kollisionsevent des Players mit obj_room_change

    GML-Quellcode

    1. x=other.next_x;
    2. y=other.next_y;
    3. room_goto(other.next_room);


    Bei dieser Methode musst du aber aufpassen, dass es bei den Zielkoordinaten, keine Berührung mit einem weiteren room_change objekt gibt, da es sonst zu einer Endlosschleife kommt. Entweder achtest du darauf, dass man nach dem raumwechsel nicht auf einem room_change objekt steht oder du baust eine entsprechende abfrage ein, dass das objekt erst "scharf gestellt" wird, sobald der spieler es verlassen hat.