Objekte gleichzeitig zerstören bei Kollision

  • GM 8

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

  • Objekte gleichzeitig zerstören bei Kollision

    Moin,

    hab folgendes Problem:


    ich möchte 2 Objekte gleichzeitig zerstört haben wenn sich diese überlappen und ich z.B. die Maustaste drücke.

    Problem (Vermutung) aufgrund dessen, dass ich beide gleichzeitig zerstören lasse ist eins der Objekte schneller weg als das andere und das "überbleibende Objekt" denkt sich dann: oh ich hab ja gar keine Kollision also bin ich auch nicht kaputt.

    Aktueller Code dafür:

    obj.schwarze_kugel.Create

    GML-Quellcode

    1. globalvar hpschwarz;
    2. hpschwarz =1;

    obj.schwarze_kugel.Step

    GML-Quellcode

    1. if (hpschwarz == 1 )
    2. {
    3. }
    4. else
    5. {
    6. if (hpschwarz == 0)
    7. {
    8. instance_destroy();
    9. }
    10. ...
    11. ...
    12. ...
    13. hit = instance_place(x,y, obj_weisse_kugel);
    14. if device_mouse_check_button_pressed (0, mb_left) {
    15. if (hit !=noone)
    16. {
    17. hpschwarz-=1;
    18. }
    Alles anzeigen


    Und das ganze dann nochmal umgekehrt für die Weissekugel ...

    jmd. eine Ahnung wie man das Problem lösen kann?


    Und dann hab ich noch eine andere Frage..

    ist es möglich einen Sprite transparent zu machen bzw. die Deckkraft runter zu setzen? Während man im Spiel ist? Das es von 100% Deckkraft auf 0% Deckkraft über GML springt? Und dann praktisch unsichtbar für das Auge ist aber nicht unsichtbar für das Spiel und weiterhin alle Funktionen wie z.B. die Zerstörfunktion von da oben funktioniert?

    Vielen Dank schonmal für eure Hilfe! :)
  • andere instanzen zerstören kannst du zum beispiel mit with, also:

    with(ANDERESOBJEKT) instance_destroy();

    und ja du kannst mit image_alpha die deckkraft einstellen.
    dazu musst du einfach einen wert zwischen 0 und 1 nehmen, z.B. 0.5 = 50%

    image_alpha = 0.5

    oder direkt im draw event mit:

    draw_sprite(sprite,subimage,x,y,xscale,yscale,rot,color,ALPHA) bei alpha dann einfach einen wert zwischen 0 und 1 schreiben.

    -Nils ;)
  • Irgendwie funktioniert das noch immer nicht so richtig.

    Ich möchte, dass wenn Kugel 1 und Kugel 2 überlappen und man die Linke Maustaste drückt beide gleichzeitig kaputt gehen lassen.

    Hatte jetzt zwei Ansätze... der eine steht oben und der andere war folgender (welcher auch nicht funktioniert hat mit other)

    obj.schwarze_kugel.step

    GML-Quellcode

    1. if device_mouse_check_button_pressed (0, mb_left) {
    2. hit = instance_place(x,y, obj_weisse_kugel);
    3. if (hit != noone )
    4. {
    5. [size=14]with(other) instance_destroy()
    6. [/size] instance_destroy();
    7. }
    8. }


    Wo muss ich dort das other reinpacken? Das sollte eig. die bessere Lösung sein..
  • Nice! Vielen Dank!

    Allerdings ist mir aufgefallen, dass die Geschichte mit dem Alphakanal leider doch nicht funktioniert. :/

    Man sieht praktisch, dass die beiden Kugeln bzw. Quadrate übereinander liegen.. aber das soll man nicht.

    Der Code dafür:

    if (kschwarz == 1 ) {
    hspeed = 8;
    image_alpha = 1;


    }



    if (kschwarz == 0) {

    hspeed = 0;
    image_alpha = 0;

    }

    und das ganze nochmals für Weiß.

    Nur mit einem unterschiedlichen Anfangswert, sodass sich immer nur eine Farbe bewegt. Entweder Schwarz oder eben Weiß... wenn die Quadrate nun miteinander "kollidieren" bzw. übereinander sind, sieht man das. Das soll man aber nicht. Die sollen unsichtbar sein wenn sie sich nicht bewegen..was mache ich falsch? :D

    Vielen, vielen Dank schonmal! Bist eine große Hilfe. :)