Kollisionsabfrage und Explosionserzeugung

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

  • Kollisionsabfrage und Explosionserzeugung

    Hi,
    ein neues Problem ist aufgetaucht, nicht weiter dramatisch vielleicht aber irgendwie komisch:

    Ich habe eine Kollisionsabfrage bei einem Feindobjekt (asteroid_obj) eingefügt. Im Step-Event. Im folgenden soll bei einem Laser-Schuss-Treffer bzw. einer Kollision mit dem Spielerraumschiff eine Explosionsanimation ausgeführt werden (im Obj. befindet sich Event: Animation-End - Zerstöre Instanz, mehr nicht).

    Das Problem ist nun, wenn das Spiel beginnt und ein Laser-Schuss-Treffer den besagten Asteroiden trifft funktioniert es. Sobald aber eine Kollision mit dem Spielerraumschiff stattgefunden hat bleiben die erwarteten Explosionen aus... . = Frage, wieso?

    Ich habe das Problem wie folgt versucht zu lösen und zwar indem ich die Kollisonsabfragen mit dem Player_obj in eben dieses hinein setze. Das bringt aber nichts, weil ich dann nicht den Asteroiden zerstören kann und eine zusätzliche Bemerkung in dem Asteroiden-Objekt unterbringen müsste.

    Hier einfach mal der Quell-Code aus dem Asteroiden-Objekt:

    GML-Quellcode

    1. //Kollisionsabfrage mit dem Laser-Schuss des Spielers, Treffer setzt die
    2. //Punktzahl relativ +10 (score), es wird eine Explosion erzeugt
    3. if(collision_circle(x,y,15,laser_obj,true,false))
    4. {
    5. instance_create(asteroid_obj.x,asteroid_obj.y,explo01_obj);
    6. score+=10;
    7. instance_destroy();
    8. }
    9. //Kollisionsabfrage mit dem Asteroiden, Kollision setzt Schildengergie
    10. //relativ -5 (health), es wird eine Explosion erzeugt
    11. if(collision_circle(x,y,15,player_obj,true,false))
    12. {
    13. instance_create(asteroid_obj.x,asteroid_obj.y,explo01_obj);
    14. health-=5;
    15. instance_destroy();
    16. }
    Alles anzeigen


    THX pestamoebe
    Dieser Beitrag wurde ausgezeichnet mit einem großen LOB.

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

  • Ich habe das Problem wie folgt versucht zu lösen und zwar indem ich die Kollisonsabfragen mit dem Player_obj in eben dieses hinein setze.Das bringt aber nichts, weil ich dann nicht den Asteroiden zerstören kann und eine zusätzliche Bemerkung in dem Asteroiden-Objekt unterbringen müsste.

    Das ist doch richtig so! ^^ den Asteroiden zerstörst du mit:

    GML-Quellcode

    1. with (other){ instance_destroy(); }

    Und eine zusätzliche "Bemerkung" musst du auch nicht machen.

    -gn
    Kaldor - Das erste echte MMORTS
  • Hi GamerNet,

    hab ich probiert in verschiedenen Varianten:

    1. im Player_obj im Step-Event,
    2. im Player_obj mit eigenen Kollisions-Event wobei ich collicion_circle usw. entfernt habe,
    3. habe other mit dem entsprechendne Obj-Namen ersetzt.

    Problem, das die Animation für die Explosion bei einer Kollision mit dem Laser wie gewollt ausgeführt wird bleibt bestehen. Ich häng mal die gmk-Datei ran (Version 7) ... . Wer weiss was ich verbrochen habe ...

    Simple Space Shooter gmk - file ?

    Erstmal Danke!

    Gruß pestamoebe
    Dieser Beitrag wurde ausgezeichnet mit einem großen LOB.
  • Habe es mal gefixt. Ich weiß wirklich nicht wieso mir das nicht vorher aufgefallen ist: Die Explosion wird ja nur beim 1. Asteroiden-Obj kreiert.
    -gn
    Dateien
    • 08.zip

      (166,37 kB, 158 mal heruntergeladen, zuletzt: )
    Kaldor - Das erste echte MMORTS
  • Hi GamerNet,

    hab ich mir grade mal angeschaut und es funktioniert, hat bestimmt irgendetwas mit den Asteroiden_obj zu tun das gleich am Anfang abläuft? Danke erstmal für die Hilfe! - Weil ist schon arg komisch gewesen. Kuck mir das nochmal genauer an, braucht aber eine Weile. Programmieren ist eine verrückte Sache, manchmal ... .

    Gruß pestamoebe
    Dieser Beitrag wurde ausgezeichnet mit einem großen LOB.
  • Ach - sorry! Habe diese Asteroiden da am Anfang hingetan, damit ich beim Testen nicht ewig auf die "originalen" warten muss. Lösche einfach die Asteroiden-Objekte aus dem room "Testroom"

    -gn
    Kaldor - Das erste echte MMORTS