Gleiches Objekt aber nur eines destroyen

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

  • Gleiches Objekt aber nur eines destroyen

    Hallo

    Nach langer Zeit versuche ich mich auch wieder mal mit dem GameMaker und habe trotz suche gleich mein erstes Problem.
    Ich lasse mehrere gleiche Objekte per Zufall im Raum erstellen und möchte, das wenn sich die Objekte berühren eines davon destroyed wird.
    Wenn ich im Objekt StepEvent:

    GML-Quellcode

    1. if place_meeting(... ) instance_destroy

    schreibe werden ja beide Objekte destroyed, da ja beide Objekte das meeting checken und somit beide destroyed werden.
    also wie mache ich das nur ein Objekt von den gleichen destroyed wird.

    Danke im voraus
    lg vectorhead
    lg Vectorhead
  • Du kannst einfach am besten eine Variable festlegen. Bei der Kollision fragen beide ab, ob ihre Variable auf false steht. Wenn false, dann setze sie beim anderen auf true. Ansonsten zerstöre mich.

    Dadurch, dass die Codes nach einander ausgeführt werden, wird dann das Objekt, bei dem es Später ausgeführt wurde zerstört.

    Edit: Mist zu spät xD...
    Mach einfach was Belial geschrieben hat ^^
    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
  • HMM ich glaub ich bin zu dämlich ich habe jetzt folgendes im StepEvent von besagtem Objekt:

    GML-Quellcode

    1. if place_meeting(obj_level1_gegner1c.x,obj_level1_gegner1c.y,obj_level1_gegner1c)
    2. {
    3. var a = id;
    4. var b = other.id;
    5. if (a > b) {instance_destroy();}
    6. }


    aber die Objekte überschneiden sich, was ich eben nicht will.
    Edit: Das Objekt ist 30 x30 Pixel klein.

    Danke im voraus
    lg Vectorhead
  • Bin mir jetz nicht ganz sicher, aber würde " place_meeting(x,y,obj_level1_gegner1c); " nicht reichen? Sonst weiss der Gamemaker ja nicht genau von welcher Instanz er die x und y Koordinate nehmen soll. Zumindest weiss ich gerade nicht von welcher Gamemaker sie nimmt. 8|

    EDIT: Möglicherweise müsstest du dann noch die Boundingbox des Sprites überprüfen.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Bei place_meeting wird dem other nicht extra die id übergeben. Das musst du noch manuell machen.Am besten mit der Funktion instance_place:

    GML-Quellcode

    1. if place_meeting(obj_level1_gegner1c.x,obj_level1_gegner1c.y,obj_level1_gegner1c)
    2. {
    3. var other_obj = instance_place(obj_level1_gegner1c.x,obj_level1_gegner1c.y,obj_level1_gegner1c);
    4. var a = id;
    5. var b = other_obj.id;
    6. if (a > b) {instance_destroy();}
    7. }
    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
  • Ist denn das Obj, in dem der Code ist obj_level1_gegner1c? Dann kannst du einfach x und y benutzen. Dann bezieht es sich auf das Objekt und du hast keine Probleme mehr.
    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
  • Bei place_meeting wird dem other nicht extra die id übergeben. Das musst du noch manuell machen.Am besten mit der Funktion instance_place:



    GML-Quellcode




    if place_meeting(obj_level1_gegner1c.x,obj_level1_gegner1c.y,obj_level1_gegner1c)
    {
    var other_obj = instance_place(obj_level1_gegner1c.x,obj_level1_gegner1c.y,obj_level1_gegner1c);
    var a = id;
    var b = other_obj.id;
    if (a > b) {instance_destroy();}
    }


    jetzt sind alle Objekte weg.
    lg Vectorhead
  • Ja wie gesagt, sollte man dann auch nicht obj.x machen, da du dann alle ansprichst.
    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
  • Hallo

    Da ich das irgendwie nicht zu meiner Zufriedenheit geschaft habe ;( , habe das jetzt so gelöst das ich die Objekte so spawnen lasse das sie sich erst gar nicht berühren können.

    Trotzdem vielen dank an Belial und Husi012 für eure hilfe. :thumbsup:
    lg Vectorhead
  • haha ach sooo. jetzt weiss ich was du willst vectorhead. du müsstest eigentlich nur das place_meeting zeugs im create event ausführen lassen. so wird nur nur as derzeitig spawnende objekt beseitigt, denn alle anderen sind ja schon da und haben das create event schon hinter sich. alternativ könntest du dann auch bloss die x und y koordinaten neu zuweisen, anstelle das objekt zu zerstören.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇