Sprite von Object von Raum A in Raum B ändern (unten genauer :D)

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

  • Sprite von Object von Raum A in Raum B ändern (unten genauer :D)

    Heyho,
    Ich hatte ja mal gefragt wie ich ein Sprite im laufe des Spieles ändern kann (sprite_index) usw.
    Das klappt auch alles Prima. Jedoch möchte ich ein Sprite auserhalb des Raumes ändern und das klappt nur wenn mein Sprite im Step event geändert wird.
    Als Beispiel = Ich aktiviere im Inventar Sprite 1 -> OBJ_Controller_Sprite_1 wird erschaffen und hat im step sprite_index stehen (außerdem ist das Object pertisent oder wie das heisst(halt das es im jedem Raum ist))
    Das klappt auch, jedoch wird es schwer wenn ich mehere Skins habe. Ich könnte ja immer das Object ändern aber mit 10 Skins wird das unmöglich?!

    Bsp:

    Sprite_1 (Aktiv) -> Möchte Sprite_2 aktivieren -> drücke drauf -> change object Sprite_1 into Sprite_2 (blablabla) -> Aber wie soll ich das beim 3 machen? Versteht man das ein bisschen? xD

    Was ich einfach damit sagen möchte -> Wie kann ich ein Skin immer wie ich möchte ändern? Von A nach B von B zu F von F zu C usw. ?( ?( ?( :thumbsup: :wacko: :vogel: :vogel:
    :thumbup:
  • Erstelle doch ein Array, dass alle Sprites abgespeichert. Dann kannst du über eine Zählervariable dann pro klick diese hochzählen und dann dadurch das Sprite ändern oder wie auch immer du das möchtest.

    GML-Quellcode

    1. ​skin[5] = spr_skin1;
    2. skin[4] = spr_skin2;
    3. //...

    Ich fange von 5 an, weil man mit dem obersten Anfangen soll. Hat was mit Performance zu tun.

    Jetzt kannst du einfach über eine Variable in den eckigen Klammern diesen Skin abrufen:

    GML-Quellcode

    1. ​skin_index = 3;
    2. sprite_index = skin[skin_index];
    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 Kommt ein bisschen spät aber egal :D

    Ich hab das nicht so richtig verstanden.
    Wie kann ich es denn machen das man in einem Raum permanent einen Skin von einen Obejct (auch in einem anderen Raum ändern kann?)
    Das würde doch viel zu kompliziert sein wenn ich alles wieder in Step event zurück setze (skin1 = 0, skin2 = 0 etc.)
    Könntest du das nochmal erklären :D?
    :thumbup:
  • Sensotic schrieb:

    @Husi012 Kommt ein bisschen spät aber egal :D

    Ich hab das nicht so richtig verstanden.
    Wie kann ich es denn machen das man in einem Raum permanent einen Skin von einen Obejct (auch in einem anderen Raum ändern kann?)
    Das würde doch viel zu kompliziert sein wenn ich alles wieder in Step event zurück setze (skin1 = 0, skin2 = 0 etc.)
    Könntest du das nochmal erklären :D?


    Also du hast ein Objekt.
    Dieser ist Persistent.
    Nun willst du, dass dieser überall einen anderen Skin hat oder verstehe ich etwas falsch?
  • Ah kann sein, dass ich es falsch verstanden hatte.
    In jedem Raum möchtest du einen beliebigen Skin haben?

    Du kannst das auch mit einem Array machen:

    GML-Quellcode

    1. skin[room_last] = -1; //Erstelle das Array (Den Wert mit dem größten Wert als erstes erstellen, um bessere Performance zu erzielen)
    2. skin[rm_level1] = spr_skin1;
    3. skin[rm_level2] = spr_skin2;
    4. //usw.

    Im Event room-start kannst du dann das Sprite so dann immer richtig umstellen:

    GML-Quellcode

    1. sprite_index = skin[room];


    Möchtest du für einen Raum ein anderes Sprite einstellen machst du das über
    skin[rm_deinRaum] = spr_dasAndereSprite;
    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
  • @Coleft @Husi012 Also: Ich habe einen Spieler, und in seinem Inventar kann man Skins auswählen, diese Skins ändern das Aussehen vom Spieler.
    Das Inventar ist Quasi ein anderer Raum. Deswegen weiß ich nicht wie ich es mache, das ich ein Skin auswähle und der Spieler dieses Skin (aussehen) im anderen Raum hat.
    Hoffe es ist verständlich :D
    :thumbup:
  • Sensotic schrieb:

    @Coleft @Husi012 Also: Ich habe einen Spieler, und in seinem Inventar kann man Skins auswählen, diese Skins ändern das Aussehen vom Spieler.
    Das Inventar ist Quasi ein anderer Raum. Deswegen weiß ich nicht wie ich es mache, das ich ein Skin auswähle und der Spieler dieses Skin (aussehen) im anderen Raum hat.
    Hoffe es ist verständlich :D


    if(Bedingung, wenn auf das Objekt mit dem Skin geklickt wird)
    with(Obj_Spieler)
    {
    sprite_index = Skin 1;
    }
  • Dazu kannst du auch eine globale Variable benutzen.

    GML-Quellcode

    1. global.player_skin = spr_player_skin1; //Ganz zu anfangs

    Der Spieler bekommt diesen immer jeweils über

    GML-Quellcode

    1. sprite_index = global.player_skin;

    Um den Skin dann zu ändern musst du den Umständen entsprechend die Variable einfach ändern

    GML-Quellcode

    1. global.player_skin = spr_player_neuerSkin;
    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
  • global.player_skin
    initialisierst (erstellst) du ganz zu Anfangs, was während des Spiels nicht ein weiteres Mal geschehen darf. Diesen Wert kannst du auch in einer Datei abspeichern und den Wert zu Anfang jeweils auslesen.

    In der Variable packst du einfach das Sprite für den Spieler. Im Spieler selbst musst du dann je nachdem auch einfach im create Event
    sprite_index = global.player_skin
    machen, oder war der Spieler der, der persistent ist?

    global.player_skin kannst du dann im Inventar auch ein anderes Sprite geben und der Player würde sich durch die Zeile im Create anpassen.
    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
  • Ich meinte

    GML-Quellcode

    1. ​global.player_skin = spr_deinSpriteFuerDenSpieler;

    ^^
    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
  • ne das sprite_index = ... muss ins create vom Spieler
    global.player_skin muss auf das Sprite, was der Spieler bekommen soll.
    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
  • Du musst einfach nur im create event etwas definieren wie

    GML-Quellcode

    1. global.skin = spr_NormalesAussehen;

    im step vom spieler

    GML-Quellcode

    1. sprite_index = global.skin;


    und wenn du auf deinen knopf oder was auch immer drückst setzt du dann

    GML-Quellcode

    1. global.skin = spr_irgendEinAussehen;


    Alternativ kannst du auch globale Variablen auslassen und direkt im Knopf

    GML-Quellcode

    1. with (obj_player) {
    2. sprite_index = spr_neuerLook;
    3. }

    ausführen

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Du musst die globale Variable zum Spielstart deklarieren. Gaaaanz am Anfang. Dann ist sie von Anfang an im Speicher und du kannst von überall in deinem Spiel drauf zugreifen.

    Las die nicht im Spieler deklarieren. Ich nutze dafür immer ein Objekt das im ersten Raum nur vorhanden ist, und nichts anderes macht wie alle globalen Variablen zu initalisieren.
  • In dem Fall erstellst du ja auch nur einmal dein persistentes Objekt. Dorz im create würde reichen.
    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