Wie Particle aus einem Particlesystem löschen, wenn das Objekt indem das System erstellt wurde nicht mehr existiert?

  • GM 8
  • Wie Particle aus einem Particlesystem löschen, wenn das Objekt indem das System erstellt wurde nicht mehr existiert?

    Frage steht oben.
    Ich habe einen Schuss der wenn er auf Gegner trifft Blut erstellt, wenn ich in einen anderen Raum gehe sollen diese Partikel nicht mehr zusehen sein.

    Wenn ich die aber lösche, sagt der der kennt die Variable nicht.
    Ich check das nich so richtig
    Sorm ist Schuld

    Edit: Doch ist er
  • Du solltest ein Partikel-System extra für diese Dinge erstellen und dessen Index in eine _globale Variable_ speichern.
    Dann kannst du beim Raumwechsel immer mittels der Funktion part_system_clear(ind) alle Partikel und Emitter löschen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Es kann nicht sein dass er die Variable nicht kennt wenn du sie vor dem Erstellen des Partikel-Systems globalisiert hast!
    also mit globalvar VARIABELNAME;
    Und das muss funktionieren denn die Funktion löscht alle Partikel.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Beides geht!

    Entweder du initialisierst eine Variable als global (das geht so wie ich erwähnt habe) Dann darfst du aber im weiteren verlauf kein global. davor schreiben!
    Oder du benutzst immer die Variante mit global. davor. Kommt auf das selbe raus.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • ja, natürlich is das so, ne verinfachte version wird schwierig.
    Ich versuchs mal zu erklären:

    Ich habe nen player, der hat ne waffe, diese waffe schießt "schüsse"
    Im create event des schusses:

    GML-Quellcode

    1. censored :troll: :troll: :troll:

    so
    wenn der aufn enemy trifft erstellt er blood

    Sobald er den Dungeon verlässt und wieder in die normale welt zurück kehrt sollen die im dungeon befindlichenden liegenden blood-paticle gelöscht werden.
    Damit sie weg sind und nicht im nächsten Raum zu finden sind, bzw. wenn ich wieder in diesen dungeon gehe.

    Also schreib ich im "Dungeon-EInstellungs-Objekt"
    bei room start und room end:

    GML-Quellcode

    1. if(part_system_exists(pBlood)){
    2. part_system_clear(pBlood)
    3. }


    bzw. ich hab auch schon z.b.

    GML-Quellcode

    1. if(variable_global_exists("pBlood")){
    2. part_system_clear(pBlood)
    3. }


    oder

    GML-Quellcode

    1. part_system_clear(pBlood)


    probiert, nix funtioniert wies soll
    Sorm ist Schuld

    Edit: Doch ist er

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

  • Du kannst ein Objekt dafür das die ganzen Partikel handelt, z.B. obj_BloodManager. Du kannst ein User Defined Event benutzen (oder ein Skript, oder beides in einem) um Blut zu erstellen und überall wo du nun Blut brauchst kannst du

    GML-Quellcode

    1. with(obj_BloodManager) {
    2. event_user(0);
    3. }

    benutzen.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Ahh... okey, das erklärt einiges denn du darfst nicht für jeden Schuss neue Partikel-Typen erstellen und schon gar kein neues System!

    Kopiere diesen Code aus dem Create event des Schusses in ein Controler-Objekt (so eins wie Henrik erwähnte). Dieses Objekt muss persistent sein (einfach ankreuzen) Dies hat zur folge dass es immer da bleibt auch wenn man den Raum wechselt.
    Nun fügst du über dem Code noch folgende Zeile ein:

    GML-Quellcode

    1. globalvar pBlood, bloodLiegend, blood;


    Der Teil

    GML-Quellcode

    1. part_system_clear(pBlood)
    bleibt gleich (am besten die erste Variante die du hast)

    Womit erstellst du denn die Partikel wenn die Schüsse kolidieren? Mit part_particles_create()?
    Wenn das so ist, dann bleibt dort auch alles gleich.

    Hoffe jetzt funktionierts :)

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