instance_change Problem

  • GM 6

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

  • instance_change Problem

    Ich möchte, dass eine Instanz zu einem anderen Objekt wechselt, aber seinen sprite_index beibehält.
    Das scheint aber auf ganz normalem Wege einfach nicht zu funktionieren.

    verwende ich:

    GML-Quellcode

    1. instance_change(actor_dead,0)

    oder

    GML-Quellcode

    1. instance_change(actor_dead,1)

    Ändert er jedes Mal den sprite_index zu dem des Zielobjektes, selbst wenn es gar kein Sprite hat.

    wenn ich die variablen speichere:

    GML-Quellcode

    1. s = sprite_index
    2. i = instance_change(actor_dead,x) //x = 0/1
    3. i.sprite_index = s


    oder auch einfach

    GML-Quellcode

    1. s = sprite_index
    2. instance_change(actor_dead,x) //x = 0/1
    3. sprite_index = s


    Nichts will funktionieren. Die suche Nach instance_change, hat nichts brauchbares ergeben.
    Was genau macht instance_change eigentlich intern? Wieso kommt es zu diesem Problem?

    Freue mich über jede Antwort

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01
  • Hi, das hier steht in der Hilfe:

    instance_change(obj,perf) Wechselt die Instanz nach obj. Ob ein "creation/destroy event" ausgelöst wird, gibt perf an.


    Naja, weiß auch nicht wirklich ne Lösung grad, aber du könntest zur Not auch einfach ein weiteres Objekt machen, aber ich denke, da wird sich noch ne besssere Lösung finden.
    Gruß Gamer
  • @Henrik1235 Deine Satzformulierung ist äußerst verwirrend.

    Nein, das ist keine wirkliche Lösung. Instance_create erzeugt ein neues Objekt, mit neuer iD.
    Jedes Objekt, das währenddessen auf das Objekt zugreift, löst einen Fehler aus.
    Außerdem will ich auch für Listen etc die ID nicht einfach ändern lassen (Ein "Actor" stirbt, wechselt zum Todesobjekt,
    kann aber ggf wiederbelebt werden).

    Und darüberhinaus "überträgt" instance_change noch alle aktuellen Variabeln, bzw sie werden beibehalten.
    Klar jetzt kommt: "Dann übertrage sie doch manuell".
    Erstens, kommen da noch einige hinzu. Wenn ich jetzt eine neue Variable erstelle, muss ich sie dann noch jedes mal eintragen. Außerdem, werden auch für
    Level-Scripte nochmals eigene erstellt (Markierungen etc.). Was der 2. Punkt gg instance_create ist.

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01
  • Speicher den Sprite Index in einer globale Variable und übertrag sich dann.

    GML-Quellcode

    1. //Create Event von igend ein Objekt
    2. global.index=""

    GML-Quellcode

    1. instance_change(actor_dead,true)

    GML-Quellcode

    1. //Create Event von actor_dead
    2. sprite_index=global.index

    MfG Henrik1235
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Globale Variablen sind da keine Hilfe. Wenn 2 Gegner gleichzeitig sterben(es gibt AoE Schaden), kriegen
    alle das Sprite des zuletzt bearbeiteten Objektes. Würde ich denn sonst bitte so auf die IDs bestehen?

    Edit: Ok alles klar, es hat sich erledigt. Ich habe dann diese Methode (mann, stand ich auf dem Schlauch xD) mit lokalen Variablen benutzt. Thema gelöst. Danke für den Denkanstoß, Hendrick (ohne d und c)
    Nun hapert es allerdings noch am Wiederbeleben. Da kann ich das Createevent nicht verwenden, das würde alle Änderungen verwerfen.


    MFG Nicht-Henrik1235

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Sephiroth ()

  • Dann übernimmt er aber wieder das Sprite des Actors -.- (welches manuell vergeben wird)

    MfG Nicht-Henrik1235

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01

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

  • Soweit ich weiss sind Variablen die mit "Var" erstellt wurden zeitweise global. Du könntest versuchen eine Variable zu machen und die ID als String anzuhängen.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Problem endgültig gelöst.
    Ich habe einfach:

    GML-Quellcode

    1. if variable_local_exists("s")
    2. {
    3. if s != -1 sprite_index = s
    4. exit;
    5. }

    Im Create-Event des Actors geschrieben. (gleich am Anfang)
    Danke an alle die versucht haben zu helfen.

    Die Community die ich einst liebte, ist mehr und mehr zu einer Plattform für kleine Kinder, selbstgerechte Gutmenschen und Heuchler verfallen.
    Viele Jahre habe ich ihr beim Sterben zugesehen aber mittlerweile habe ich alle Hoffnung aufgegeben.

    Golden Sun Camera Sample
    Mechferno Alpha 1.14
    Fruge Beta 3.01