Frage zu Blend Sprite

  • Frage zu Blend Sprite

    Ich mache gerade einen scroling Shooter und ich wollte fragen, wie ich es machen kann, dass ein Endgegner, wenn man ihn trifft, kurz weiß ist, und dann wieder normal aussieht. Das habe ich mit Sprite blnding versucht (Ich habe das Drag and Drop Teil genommen, Alpha auf 10 gesetzt, und als Farbe weiß genommen) Das ging aber net. Wenn ich als Farbe schwarz nahm ging es aber, deswegen müsste es ja mit Blend Sprite gehen.

    mfg
    Floz

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

  • Endgegner-Objekt:

    Kollision mit Geschoss:

    GML-Quellcode

    1. sprite_index = DeinBlendesprite
    2. alarm[0] = 10


    alarm[0]-Event:

    GML-Quellcode

    1. sprite_index = UrsprünglicherSprite


    Das müsste eigentlich gehen.
    Dieser Beitrag ist Spam.
    | |
    | |
    \. ./
    \/
  • Zuerst mal ist zu sagen, dass der Alpha-Wert die Transparenz eines Objekts angibt. Außerdem muss dieser Wert zwischen 0 (unsichtbar) und 1 (voll sichtbar) liegen. Der Game Maker mischt die beiden Farben und setzt dann noch den Transparenzwert. Bei Weiß passiert da nichts. In dieser Erklärung könnten jetzt kleinere Fehler sein, aber im Großen und Ganzen stimmt das wohl so.
    Ich würde dir von dieser Funktion abraten und meine obenstehende Lösung benutzen, da können eigentlich keine Probleme auftreten und es ist einfach umszusetzen.
    Dieser Beitrag ist Spam.
    | |
    | |
    \. ./
    \/
  • Ich habe auch schon nach einer möglickeit gesucht, einen sprite weiss zeichnen zu lassen.
    da scheint es keine Lösung für zu geben.

    Du kannst es allerdings mal mit draw_set_blend_mode() versuchen.

    also im draw event dann:

    GML-Quellcode

    1. if(hit)
    2. {
    3. draw_set_blend_mode(bm_add)
    4. draw_sprite(sprite_index,image_index,x,y);
    5. hit=false;
    6. draw_set_blend_mode(bm_normal);
    7. }
    8. draw_sprite(sprite_index,image_index,x,y);


    Das sollte den sprite kurz heller blinken lassen.
    Funktioniert aber nicht mit schwarzen flächen :(
    natürlich musst du, wenn der gegner getroffen wird hit=1 und hit im create event des gegners auf 0 setzen.
  • Bei dem Code(deinen nur ein wenig abgeändert, da deiner bei mir net geht) blinkt bei mir alles kurz auf. Wenn aber nur der Gegner blinken würde, wäre es perfect.

    Mein Code:
    Ins collision mi dem Schuss: hit = true
    ins draw event:
    if hit = true then
    {
    draw_set_blend_mode(bm_add)
    draw_sprite(sprite_index,image_index,x,y);
    alarm[5] = 1
    hit = false
    }
    draw_sprite(sprite_index,image_index,x,y);

    and ins alam[5] event :
    draw_set_blend_mode(bm_normal);
  • Wenn ich den Blendmode sofort zurück setze, passiert aber gar nix. Kann man net irgendiwe machen, damit nur eine Sprite damit gezeichnet wird ???

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Floz ()

  • Du kannst nicht draw_set_blend_mode(bm_normal) einfach in den alarm event rein tunen. Das gilt dann für alle Objekte! Also wieder ins Draw event damit.

    Ich finde die Lösung nicht ganz so gut. Probier mal das hier

    GML-Quellcode

    1. draw_sprite(sprite_index,image_index,x,y);
    2. if hit = true then
    3. {
    4. draw_set_blend_mode_ext(bm_inv_src_color,bm_one)
    5. draw_sprite(sprite_index,image_index,x,y)
    6. /*draw_set_blend_mode(bm_add)
    7. draw_sprite(sprite_index,image_index,x,y)*/
    8. draw_set_blend_mode(bm_normal)
    9. hit = false
    10. }
    Alles anzeigen



    Wie das mit dem draw_set_blend_mode_ext(bm_inv_src_color,bm_one) funktionieren kann? Zuerst zeichnen wir den grund Sprite. Dannach zeichen wir den mit den Umgekehrtenfarben und so wirds Weiß. Wenn es nur invertiert dargestellt wird einfach die /* und */ weg machen. Ich hoffe das es hilft.

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

  • also bei mir haut's die transparenzen weg, ich sehe den sprite als (invertierte version) des blockes.

    Auserdem wird's eigentlich nicht weiss, wenn man ein invertiertes bild über ein nicht invertiertes legt, sondern eher grau.

    draw_set_blend_mode_ext() wird wohl immer ein Buch mit 7 Siegeln für mich sein ~~ (mal abgesehen davon, das dieser befehl von ein paar grafikkarten misinterpretiert wird)
  • @ Bernt ;: Bei deinem Lösungsvorschlag wird die Sprite kure Zeit nicht transparent und dann wieder transparent. Von daher ist Verwurschters Lösungsvorschlag besser.

    Edit: Jetzt hat Verwurster schon vor mir gepostet :(

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

  • Ihr macht es euch alle so umständlich. Der einzige Grund, warum es nicht geht, ist doch dass die Blendfarbe WEISS ist. Es gibt doch einen Befehl, mit dem man aus den drei RGB Werten ('make_color' oder so - sry, bin grad auf Arbeit und kann nicht nachschauen) eine Farbe mischen kann. Mach dir da einfach eine Farbe und setz alle drei Werte auf 254. Dann ist es fast weiss. Dürfte sich nicht sichtlich unterscheiden und dann müsste die ursprüngliche Version von Floz auch funzen. Schliesslich ging es bei SCHWARZ auch. Korrigiert mich, wenn ich mich irre.

    Wenn ich mich nicht täusche, müsste das dann so aussehen:

    farbe=make_color(254,254,254);

    Müsste mal jemand in der Hilfedatei nachschlagen..
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Benutzer online 1

    1 Besucher