Warum "destroyed" er denn einfach nicht...?

  • GM 8
  • Warum "destroyed" er denn einfach nicht...?

    Hi, da bin ich wieder. Tut mir leid, hab schon wieder ein Problem. Seit nunmehr 14 Stunden versuche ich, das in den Grill zu bekommen - vergeblich. Wo liegt denn bloß der Fehler?

    Beschreibung: Der Spieler erstellt mit einem Tastendruck an der Stelle seiner Figur eine Markierung (in dem Fall eine Fahne). Macht GM auch. Wenn der Spiele jetzt auf einer Stelle steht, an der schon eine Markierung existiert, dann soll die Fahne wieder entfernt werden. Entweder mit der gleichen Taste oder meinetwegen auch mit einer anderen. Jedoch: nichts passiert!

    Bestenfalls werden mit destroy sämtliche Fahnen gelöscht, aber das will ich nicht. Es gibt da ja noch die Funktion "position_destroy(x,y)" und damit sollte es doch möglich sein, das gewünschte Objekt an einer bestimmten Position zu löschen. Denkste. Auch wenn ich es nicht per D&D mache, sondern als Code schreibe: "with(obj_fahne) {position_destroy(x,y);}" - passiert einfach: nichts.... *schnieeeef*

    Was um alles in der Welt mache ich denn nur falsch??? Warum zerstört er mein Fähnchen einfach nicht? Ach ja, das Kollision-Event kann ich hier ja nicht nutzen, weil ja beim ersten Erstellen dann schon eine Kollision gegeben wäre.

    Bitte um Hilfe, dringend, stehe kurz vorm Verzweifeln.

    Hätte auch nicht gedacht, daß so eine kleine Zeile soooviel Zeit kosten könnte... ;(
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Step Event vom Player

    GML-Quellcode

    1. if (keyboard_check_pressed(deine_taste)) {
    2. if (!place_meeting(x,y,obj_flag))
    3. instance_create(x,y,obj_flag);
    4. else {
    5. ii = collision_rectangle(x,y,x+sprite_get_bbox_right(sprite_index),y+sprite_get_bbox_bottom(sprite_index),obj_flag,1,1);
    6. with (ii) instance_destroy();
    7. }
    8. }
    :| < Hallo. Nein ich bin nicht die Signatur, ich putze hier nur.
  • Lightning the Hedgehog schrieb:

    if (keyboard_check_pressed(deine_taste)) {
    if (!place_meeting(x,y,obj_flag))
    instance_create(x,y,obj_flag);
    else {
    ii = collision_rectangle(x,y,x+sprite_get_bbox_right(sprite_index),y+sprite_get_bbox_bottom(sprite_index),obj_flag,1,1);
    with (ii) instance_destroy();
    }
    }


    Whow, klasse - das funzt, und wie! Tausend Dank erst mal! Allerdings hätte ich gerne auch alles verstanden. Ich sehe, daß einfach ein leeres Rechteck über das Sprite gezogen wird. Was ich nicht verstehe, ist, woher das "ii" bei "with (ii) instance_destoy()" stammt. Könnte mir das vielleicht noch jemand kurz erklären?



    Darüber hinaus hätte ich wenn möglich auch gerne gewusst, wozu es sowas wie "position_destroy(x,y)" (ist bei D&D wohl das Bild mit den Dynamit-Stangen) eigentlich gibt, wenn es trotzdem keine Reaktion ausführt. Zumindest zerstört es kein Objekt an der angegebenen Stelle. Hat es womöglich einen anderen oder eingeschränkten Sinn? Ich habe in der Dokumentation nichts gefunden, was darauf hinweisen würde.



    Viele Grüsse,

    Archie

    PS: Auch deine Signatur finde ich klasse! :thumbup:
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Eigentlich sollte position_destroy schon funktionieren insofern eine Kollision mitd em Punkt stattfindet, weis nicht so recht, hab die Funktion noch nie benutzt.
    Das ii hält in dem Code dort die ID des Objektes das zerstört werden soll.
    Die Funktion collision_rectangle(x,y,x+sprite_get_bbox_right(sprite_index),y+sprite_get_bbox_bottom(sprite_index),obj_flag,1,1);
    gibt wenn eine Kollision mit dem angegebenen Objekt stattfindet die ID dieses Objektes zurück, diese wird also in die variable gespeichert um etwas mit dem Objekt machen zu können.

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

    1 Besucher