room wechseln

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

  • room wechseln

    hi, ich nochmal^^

    ich grüble schon lange daran herum, wie ich am besten einen room-wechsel umsetze, der an sich eigentlich ganz einfach ist. ich habe da schon eine idee, das lässt sich aber so schwer in geschriebene worte fassen, dass ich erst mal frei in die runde fragen will, wie ihr das machen würdet.
    das ganze hat nichts mehr mit meiner iso-frage von vorhin zu tun^^

    mein spiel basiert auf einem schritt-system, es gibt also keine fließenden bewegungen. ein schritt ist dabei 32 pixel groß. im bild: jede der farben markiert einen eigenen raum, wobei jeder raum auch einen extra room darstellt :D
    ich hab das nur zum verständnis zusammengestöpselt. die braunen dinger sind türen.
    wenn der raum gewechselt wurde, soll der spieler dann übrigens auch an der tür starten, die mit seiner letzten position verbunden ist...relativ gesehn.
    also wenn er durch tür A raum 1 betritt, soll er nicht bei tür B stehen.

    gott, ich hoffe ich hab das einigermaßen verständlich hingekriegt :D

    eigentlich ganz einfach wie gesagt, aber wenn man so drüber nachdenkt ergeben sich da probleme, die sich so einfach nicht beschreiben lassen^^
    Bilder
    • Rooms.gif

      13,45 kB, 418×354, 385 mal angesehen
    Ne invoces expellare non possis!
  • Du kannst ein Objekt erstellen, das dir den Spieler bei Berührung an die Position x_neu und y_neu setzt. Setze die Objekte dann an die Stellen, an denen die Türen sein sollen. Diese Variablen setzt du dann im Raumeditor bei der jeweiligen Objektinstanz. Wenn du nicht verstehst was ich meine kann ich mal ein Beispiel machen, das das Grundprinzip erläutern sollte.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • So, im Event in dem der Raum dann gewechselt werden soll, beispielsweise der Kollisionsevent zwischen Spieler und Tür, wird folgender Code reingeschrieben:

    GML-Quellcode

    1. spielerobjekt.x=neu_x;
    2. spielerobjekt.y=neu_y;
    3. room_goto(neu_raum);

    Hierbei muss "spielerobjekt" durch den Namen des Spielerobjektes ersetzt werden.

    Dann setzt du das Türobjekt an die Stellen wo eine Tür sein soll. Dann drückst du die STRG Taste und klickst mit der rechten Maustaste auf eine Instanz des Türobjektes und dort auf "Creation Code". Dort fügst du dann folgendes ein:

    GML-Quellcode

    1. neu_x=neue_x_position;
    2. neu_y=neue_y_position;
    3. neu_raum=neuer_raum;

    Hierbei ersetzt du neue_x_position, neue_y_position und neuer_raum mit den passenden Werten.

    Dies bewirkt, das mit einem einzigen Objekt in einen beliebigen Raum an eine beliebige Stelle gewechselt werden kann.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Original von Windapple
    Dann setzt du das Türobjekt an die Stellen wo eine Tür sein soll. Dann drückst du die STRG Taste und klickst mit der rechten Maustaste auf eine Instanz des Türobjektes und dort auf "Creation Code". Dort fügst du dann folgendes ein:

    GML-Quellcode

    1. neu_x=neue_x_position;
    2. neu_y=neue_y_position;
    3. neu_raum=neuer_raum;

    Hierbei ersetzt du neue_x_position, neue_y_position und neuer_raum mit den passenden Werten.

    Dies bewirkt, das mit einem einzigen Objekt in einen beliebigen Raum an eine beliebige Stelle gewechselt werden kann.


    Wenn man mehrere "Türen" hat, muss man dann die X und Y Werte überall individuell anpassen? Dann müsste man ja jede Menge Objekte erstellen.

    Gibt es keine Alternative mit einem Objekt?

    Beschäftigt mich schon länger.
  • Achso, ich hab da was übersehen. Sorry :P

    Ich hatte da noch nen anderen Code. Naja, vergiss den Post.

    Edit:

    Leider funktioniert der Code bei mir nicht. Ich habe von Anfang an Räume, wo es mehrere Türen gibt. Naja, dann muss ich wohl doch für jede Raumverbindung ein neues Objekt erstellen.

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

  • ich musste den code auch etwas an meine bedürfnisse anpassen, was keine kritik an windapple sein soll, der mir sehr weitergeholfen hat :happy:

    ich weiß ja nicht genau, wie das bei deinem spiel aussieht, ich hab jetzt mit einem skript und argumenten gearbeitet.

    das skript (nennen wirs mal "SetVar"):

    GML-Quellcode

    1. new_x=argument0;
    2. new_y=argument1;
    3. new_room=argument2;


    dann gibt es ein objekt, das bei kollision mit dem spielerobjekt den ganzen prozess auslöst. also im kollisionsevent steht das hier:

    GML-Quellcode

    1. Spielerobjekt.x=new_x;
    2. Spielerobjekt.y=new_y;
    3. room_goto(new_room);


    im roomeditor habe ich für jede instanz des objektes im creationcode das obenstehende skript aufgerufen und die neue spielerposition sowie den neuen raum übergeben:

    GML-Quellcode

    1. script_execute(SetVar,neuX,neuY,neuROOM);


    neuX, neuY und neuROOM müssen natürlich bei jeder instanz nach bedarf neu eingetragen werden. das ist zwar immer noch relativ viel handarbeit, aber immerhin wesentlich weniger, als wenn du für jede tür ein eigenes objekt erstellst.

    wer das ganze nicht versteht, dem hab ichs mal eben zusammengeklöppelt:
    Dateien
    • Room-Gemosch.zip

      (3,09 kB, 112 mal heruntergeladen, zuletzt: )
    Ne invoces expellare non possis!