Bombeneffekt - Instances im Umkreis zerstören (Gelöst)

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

  • Bombeneffekt - Instances im Umkreis zerstören (Gelöst)

    Hm, schon länger her, seit ich das letzte Mal eine Frage gestellt hab. Wird mal wieder Zeit.
    Ok, also folgendes:
    Ich sitz gerade an einem Minigame, in dem man aus einem Raumschiff Kugeln und Bomben schießen kann. Die Bomben fliegen ein Stück weit und explodieren dann mittels 2 draw_circle-Aktionen. Das alles funktioniert wunderbar, allerdings stellt sich nun ein Problem: Alles, was in diese Kreise gerät, soll sterben, also Instanzen zerstören. Ich hab's schon mit collision_circle probiert, weiß jetzt aber nicht, wie ich den Rest anstellen soll... Hat jemand von euch eine Idee, wie man Instanzen in einem bestimmten Radius um ein Objekt zerstören kann?

    Hier mal die dazugehörigen Codes

    Create:

    GML-Quellcode

    1. effect=0
    2. timer=0
    3. seconds=5
    4. detonate=0
    5. distance=0
    6. radius=0
    7. play=0


    Step:

    GML-Quellcode

    1. // Der Timer für die Dauer des Effekts
    2. if timer<room_speed timer+=1 else timer=0
    3. if timer=room_speed seconds-=1
    4. if seconds=0 instance_destroy()
    5. // Rotation und Zündung, wenn Distanz zum Schiff groß genug
    6. image_angle+=5+random(10)
    7. distance=distance_to_object(obj_ship)
    8. if distance>128 detonate=1
    9. if detonate=1 {speed=0 direction=270 radius+=1 //Erweitert Kreis
    10. if play=0 play=1 //Spielt Explosionssound ab
    11. effect=collision_circle(x,y,radius,all,true,true)
    12. }
    Alles anzeigen


    Draw:

    GML-Quellcode

    1. if detonate=0 draw_sprite_ext(spr_bomb,0,x,y,1,1,image_angle,c_white,1) //Bombe darstellen
    2. else {draw_circle(x,y,radius,true) draw_circle(x,y,radius/2,false)} //Explosionseffekte darstellen


    effect wird also mit collision_circle auf true gesetzt. Aber wie schaff' ich es jetzt, alle Instances im Radius zu zerstören?

    GML-Quellcode

    1. if effect=1 {
    Der Restscirpt gehört euch :D

    Edit: effect wird nicht auf true gesetzt, da collision_circle ja die Instanz zurückgibt. (Danke interceptor, gut zu wissen) Das bringt mich leider auch nicht weiter... *Grübel* :whistling:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Irrenhaus3 ()

  • Irrtum: collision_circle gibt die Instanz zurück, nicht true. Du kannst also damit direkt ein Objekt auch zerstören. Falls es mehrere sind, solltest du eine Schleife durchlaufen.
    Ungetestet werf ich dir jetzt einfach mal folgendes vor:

    GML-Quellcode

    1. effect=collision_circle(x,y,radius,all,true,true);
    2. while (effect>=0) {
    3. with (effect) {
    4. instance_destroy();
    5. }
    6. effect=collision_circle(x,y,radius,all,true,true);
    7. }
    Müsste eigentlich alle Instanzen innerhalb des Kreises zerstören...
    Einige meiner Spiele:
  • Das kann eigentlich nicht sein. Außer du hast nicht meinen vollen Code genommen, bzw. instance_destroy() durch irgendwas anderes ersetzt. Denn wenn die Instanzen gelöscht werden, dann ist auch irgendwann Schluss mit der Schleife. Hier in meinem Beispiel funktionierts zumindest. Alternativ kannst du auch auf die Schleife verzichten und dann wird halt nur eine Instanz pro Step zerstört...
    Dateien
    Einige meiner Spiele: