Spritezuweisung, Sprites werden nicht übernommen

  • Allgemein

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

  • Spritezuweisung, Sprites werden nicht übernommen

    Hallöle,

    ich habe bei eines meiner Projekte gerade ein ärgerliches Problem,
    und zwar geht es darum:

    Im Spiel soll man in einem 3x3-Feld Puzzleteile herumschieben können, dazu will ich einfach die Sprite-ID's tauschen.
    Wenn ich im Debugmodus den sprite_index beider Objekte anschaue, dann sehe ich dass der sprite_index tatsächlich getauscht wird,
    allerdings sieht man das Resultat seltsamerweise nicht.
    Ich frage mich, ist das ein Bug oder habe ich etwas übersehen ...
    Ich hoffe mal die Lösung ist peinlich einfach.^^

    Das 3x3-Feld ist so zusammengesetzt:

    a1 | a2 | a3
    b1 | b2 | b3
    c1 | c2 | c3

    Das Feld a2 ist in dem Beispiel leer, also wenn man auf a1 klickt, soll sich das Teil von a1 zu a2 verschieben, und das leere Sprite von a2 zu a1:

    GML-Quellcode

    1. tile_clipboard = -1
    2. if obj_r6_piece_a2.sprite_index != spr_r6_piece_a2
    3. {
    4. tile_clipboard = obj_r6_piece_a1
    5. sprite_index = object_get_sprite(obj_r6_piece_a2) //funktioniert
    6. obj_r6_piece_a2.sprite_index = object_get_sprite(tile_clipboard) //funktioniert nicht
    7. }


    Wäre dankbar für jeden Ansatz!
  • Eeigentlich erscheint mir der Code schon richtig.
    Aber wenn so ein Feld bewegt wird, existiert ja genau eine Instanz von jedem Objekt, oder?
    Dann brauchst du es nicht über object_get_sprite machen.

    Versuch mal:

    GML-Quellcode

    1. if obj_r6_piece_a2.sprite_index != spr_r6_piece_a2
    2. {
    3. tile_clipboard = sprite_index;
    4. sprite_index = obj_r6_piece_a2.sprite_index;
    5. obj_r6_piece_a2.sprite_index = tile_clipboard;
    6. }
    Keine Ahnung ob das was ändert.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 1

    1 Besucher