sprite mit blend mode zeichnen?

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

  • sprite mit blend mode zeichnen?

    Ich habe ein kleines Problem beim zeichnen eines Sprites mit blend mode.

    Ic hhabe ein Sprite extern geladen (schwarzweiss übergang.)
    Nun gebe ich ins draw event des obj_controller das ein:

    GML-Quellcode

    1. draw_sprite_ext(pic_l_light,0,144,64,186,142,0,c_white,1);


    bei der skalierung des sprites gebe ich die oroginal größe ein. (stimmt das so?)

    Ic hwill nähmlich das das Sprite weiss Leuchtet. doch es wird garnicht gedrawt! Eine Fehlermeldung kommt allerdings auch nicht. was soll ich tun?
  • Hmm... Jetzt habe ich eienen Tei ldes Fehlers behoben. (1 bei der Skalierung.)

    Jedoch wird das nicht wirklich als Blend mode gezeichnet.
    Also das schwarze sieht man noch. Nur das weisse wird mit der Farbe "überlbendet". Wie mache ich einen richtigen blend mode auf diese weise?
  • mit darw_sprite_ext kann man nicht richtige blendmodes machen, man kann das sprite nur mit einer blendfarbe versehen. Diese farbe ersetzt dann weiß.
    Wenn du blendmodes benutzen willst, wirst du die funktion draw_set_blend_mode benutzen müssen.

    der Hilfe schrieb:

    draw_set_blend_mode(mode) Indicates what blend mode to use. The following values are possible: bm_normal, bm_add, bm_subtract, and bm_max. Don't forget to reset the mode to normal after use because otherwise also other sprites and even the backgrounds are drawn with the new blend mode.
    MfG SDX
  • Okeyyy. Habe dies schon hinbekommen.^^

    Musste für das Sprite leider ein eigenes Objekt machen...

    Noch eine frage:

    Ich habe ein Objekt extern ein Sprite zugewiesen. Das will ich auch mit image blend "füllen".
    Nun will ich machen das es rotiert. (Gebe "image_angle +=+1;" ins step-event rein.)

    Nun gebe ich ins draw event aber die Blend funktion ein. also:

    draw_set_blend_mode(bm_add);
    sprite_index = pic_eye;
    image_blend = c_red;
    draw_set_blend_mode(bm_normal);

    Doch das Sprite wird nicht gedrawt. Wie mache ich also, das dem objekt ein festes Sprite zugewiesen wird, das gleichzeitig geblendet und rotiert wird? (Also pro step um eine bestimmte anzahl rotieren.)

    Da bin ich ratlos.
  • Da fehlt auch der draw_sprite befehl.
    Um die ganzen image_ variablen nutzen zu können setzte da einfach folgenden draw_code ein:

    GML-Quellcode

    1. draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)
  • GML-Quellcode

    1. draw_set_blend_mode(bm_add);
    2. sprite_index = pic_eye;
    3. image_blend = c_red;
    4. draw_set_blend_mode(bm_normal);
    Ist absoluter quatsch, wie der name der funtion draw_set_blendmode sagt, sollte diese ins (oh wunder) draw event :pinch:
    Sollt so ausehen, im draw event:

    GML-Quellcode

    1. sprite_index = pic_eye;
    2. image_blend = c_red;
    3. draw_set_blend_mode(bm_add); // beieinflusst NUR das drawen, nicht andere funktionen
    4. draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);
    5. draw_set_blend_mode(bm_normal);


    Und warum hasst du ein neues object gemacht, nur um das richtig zu drawen?

    EDIT: zu lahm
    MfG SDX
  • SDX schrieb:

    mit darw_sprite_ext kann man nicht richtige blendmodes machen, man kann das sprite nur mit einer blendfarbe versehen. Diese farbe ersetzt dann weiß.

    Falsch. Es wird nicht einfach weiß ersetzt. Je heller die Originalfarbe, desto stärker die Färbung. Schwarz bleibt also schwarz, und weiß nimmt vollständig die gewünschte Farbe an.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ihr versteht mein anliegen anscheinend falsch.

    Ich will dem Objekt ganz einfach ein Sprite zuordnen.
    Dieses soll mit image_blend befüllt werden.
    (Dieser Script funkt nicht:
    sprite_index = pic_eye;
    image_blend = c_red;
    draw_set_blend_mode(bm_add); // beieinflusst NUR das drawen, nicht andere funktionen
    draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);
    draw_set_blend_mode(bm_normal);
    )

    Wieso ich extra ein neues Objekt gemacht habe? Ganz einfach: ic hwill das Sprite pro step mit image_angle drehen. Bis dato ist mir nur die image_angle funktion für ein Objekt bekannt.
    Doch leider funkt das ganze nicht. Ich weiss nciht wie ich ein gedrawtes Sprite mit blend mode zum drehen bringe.

    /Edit: Ic hhabe das mit dem blednen schon hingekriegt:

    GML-Quellcode

    1. draw_set_blend_mode(bm_add);
    2. draw_sprite_ext(pic_eye,0,obj_eye_one.x,obj_eye_one.y,1,1,0,c_red,1);
    3. draw_set_blend_mode(bm_normal);


    Jedoch kann ich das Sprite mit image_angle nicht drehen. Wie dreht man nun das Sprite pro step?

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

  • und das drehen bekommst du auch noch hin: in der funktion draw_sprite_ext() gibt es ein argument, das heißt angle.. jetzt steht da noch image_angle, also den wert von dem object zugeordnetem sprite. Du kannst auch einen eigenen wert eintragen, einfach im step event eine variable hochzählen, und die dann als angle benutzen, dann dreht sich auch, ohne das du ein eignes object dafür brauchst..
    Das gilt jetzt nicht nur für den angle, du kannst alles anpassen. Wie in der Hilfe beschreiben:

    der Hilfe schrieb:

    draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha)
    Zeichnet das Sprite skaliert, um rot Grad gegen den Uhrzeigersinn
    gedreht, mit den Faktoren x,y. color gibt die Farbe an, mitder das
    Sprite geblendet wird (benutze c_white um nicht zu blenden). alpha gibt
    die Durchsichtigkeit des Sprites an. Ein Wert von 0 macht es komplett
    transparent.
    Ein Wert von 1 komplett undurchsichtig.


    MfG SDX
  • Benutzer online 4

    4 Besucher