Bestimmte Instanz von vielen löschen

  • GM 8
  • Bestimmte Instanz von vielen löschen

    Ich weiß, ich habe mich als GML Fortgeschrittener eingeschätzt und eigentlich kann ich das, aber hier mal eine (noobige) Frage:
    Wie kann ich eine Instanz löschen, wenn sie mehmals im Raum existiert (obj_off) und nur die gelöscht werden soll, die sich bei self.x und self.y (bei der eigenen Position) befindet. Wie geht das :/ ? Ich habe schon versucht die ID des Objektes auszulesen und per ID zu löschen, habe es aber nicht geschafft...


    MfG Clark

    DigitalClark

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

  • Also soweit habe ich dein Problem verstanden:
    Du hast eine Instanz eines Objektes A,
    und du hast mehrere Instanzen eines Objektes B.

    Jetzt willst du an der stelle der Instanz von A die Instanz des Objektes B, falls vorhanden, löschen.
    Mach dies doch einfach per Collision-Event und schreib:

    GML-Quellcode

    1. with (other) instance_destroy();


    Ansonsten weiß ich jetzt grade nicht genau, wie du dies meinst. Welche Instanz lösch wen? Und wie meinst du das mit self.x und self.y? Löscht sich die Instanz selber? Wenn ja, was ist die Bedingung das diese gelöscht werden soll (da es ja mehrere Instanzen geben muss)? Oder ist es immer nur die neuste Instanz welche gelöscht werden soll? Dann wäre im Create-Event ähnliches nützlich:

    GML-Quellcode

    1. if (instance_number(obj) > 1)
    2. instance_destroy();


    Ansonsten falls dies erst durch andere Gegebenheiten eingeleitet werden soll, im Step-Event möglicherweiße eine IF-Abfrage durchlaufen lassen, und dort die Instanz löschen lassen.

    Verstehe auch nicht, warum du die ID an self.x und self.y suchst, da die eigene Instanz immer ihre ID in der Variable "id" gespeichert hat. Wenn sich die Instanz selbst löscht, benutz einfach IF-Abfragen bsplw. um die Fälle deutlich zu klären, ansonsten, falls von einer anderen Instanz die bsplw. wie eine Maus drüber sein soll, das Collision-Event zusammen mit dem Objekt "other".

    Möglicherweiße sind die hiergenannten Ansätze auch alle falsch, weil ich dein Problem nicht ganz verstanden habe. Vielleicht wäre eine etwas bessere Erklärung des Problems besser, momentan kann man, meiner Meinung nach, eher mit einer Schrotflinte auf dein Ziel schießen. Was vielleicht eine durchaus größere Wahrscheinlichkeit eines treffers hat, als die Nadel im Heuhaufen suchen, aber trotzdem ungenau ist.

    // Kleines Edit:
    Möglicherweiße könnte dir auch "position_meeting" helfen, wo du angeben kannst, von welchem Objekt die Instanz sein soll.

    MfG.,
    Mokuyobi
    木曜日 (Mokuyōbi)
  • Erstmal grundsätzlich:
    Eine Instanz kann nicht mehrfach existieren, nur mehrere Instanzen eines Objektes.

    Wenn du schreibst self.x und self.y, scheinst du ein Script zu haben, wo sich die Instanz selbst löscht. Das ist mit instance_destroy() ohne weiteres möglich.
    Wenn es das noch nicht ist, bitte das Problem nochmal genauer beschreiben.
  • Wenn ich dich richtig verstanden habe und deine Instanz eine Kollisionsmake besitzt:

    GML-Quellcode

    1. with (collision_point(x, y, obj_off, true, false))
    2. instance_destroy();

    Sollte die Instanz keine Kollisionsmaske haben musst du eben ihre Position vor dem Löschen abfragen.

    GML-Quellcode

    1. with (obj_off)
    2. {
    3. if (x == posx && y == posy)
    4. instance_destroy();
    5. }


    BTW, nur die zu Löschen, die sich an der eigenen Position befindet ist unlogisch, da sich alle Instanzen auf iherer eigenen Position befinden. Mit self wirst du deshalb nicht viel anfangen.

    © 2008 by Teamgrill Productions