Objekt/Sprite aufblinken lassen

  • GM 8
  • Objekt/Sprite aufblinken lassen

    Hi Leute,...

    Also folgendes,... Wenn ich einen Gegner treffe mit Schüssen soll er kurz Weiß aufblinken. Als optische Trefferbescheinigung sozusagen. Nun könnte ich hierfür eine ganz weiße version des Gegner / Sprites immer bei auftreffen des Schusses einfügen. Was aber bestimmt ziemlich umständlich ist. Außerdem nagt das bestimmt zu sehr an der Rechenleistung.

    Frage.... geht es zufällig einfacher zu regeln?
  • Ein Ansatz:

    Beim Collisionsevent mit obj_schuss

    GML-Quellcode

    1. fx_timer = 10


    Im Draw-Event

    GML-Quellcode

    1. if fx_timer>0
    2. {
    3. draw_sprite_ext(sprite_enemy,image_index,x,y,image_xscale,image_yscale,image_angle,c_white,fx_timer/10) //setz statt c_white andere Farben ein, denn ich glaube, dass es so nicht funktionieren wird. kann es bloß gerade nicht testen. (versuchs mit hellgrau)
    4. fx_timer -= 1
    5. }


    edit: c_white zeichnet das sprite ganz normal, ev. weiß jemand, wie man das sprite tatsächlich weiß färben kann. mit jeder anderen farbe funktioniert es.
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • levarris07 schrieb:

    edit: c_white zeichnet das sprite ganz normal, ev. weiß jemand, wie man das sprite tatsächlich weiß färben kann. mit jeder anderen farbe funktioniert es.

    Kann ich bestätigen, c_white zeichnet die Sprite so wie sie normalerweise ist. Ich persöhnlich nutze so ziemlich den selben Code und bevorzuge c_red, jedoch sollte da jeder selbst entscheiden :D

    MfG Marvin159
  • levarris07 schrieb:

    edit: c_white zeichnet das sprite ganz normal, ev. weiß jemand, wie man das sprite tatsächlich weiß färben kann. mit jeder anderen farbe funktioniert es.

    Man könnte für eine kurze Zeit Nebel aktivieren, der in 2D auch funktioniert.
    So allá:

    GML-Quellcode

    1. if (fx_timer > 0) {
    2. d3d_set_fog(true, c_white, 0, 0); // Weißer Nebel wird für's Zeichnen aktiviert.
    3. fx_timer -= 1;
    4. }
    5. draw_self();
    6. d3d_set_fog(false, 0, 0, 0); // Nebel wieder zurücksetzen (soll ja schließlich nur der eine Sprite weiß gezeichnet werden).


    - Joex3
    8|
  • So Hi,.. bin grad von Arbeit wieder zuhause. Und gleich mal ausprobiert.

    hmmm, leider klappt es nicht richtig. Aber das nicht an euren Lösungvorschlägen. Der Gegner bzw. das Sprite dreht sich permanent zum Player. d.h. sobald ich ein Drawevent benutze , funktioniert das mit der Bewegung nicht mehr.

    Oder, mache ich da doch vielleicht was falsch. So sehr der Experte bin ich ja noch lange nicht.

    Hier der Code für das drehen des Gegners



    image_angle=point_direction(x,y,obj_myshipparent.x,obj_myshipparent.y);



    Vielleicht fällt jemanden noch eine andere Lösung ein.

    Aber trotzdem danke erstmal für die Antworten.
  • Dürfte dann so funzen:

    GML-Quellcode

    1. if fx_timer>0
    2. {
    3. draw_sprite_ext(sprite_enemy,image_index,x,y,image_xscale,image_yscale,image_angle,c_white,image_alpha) // zeichnet den gegner selbst
    4. draw_sprite_ext(sprite_enemy,image_index,x,y,image_xscale,image_yscale,image_angle,c_ltgray,fx_timer/10) // zeichnet das blinken (hellgrau, kA wie die farbe heißt)
    5. fx_timer -= 1
    6. }
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • hmmm,.. fast klappt es. Nun Ist das Sprite komplett unsichtbar und nur wenn ich es mit den Schüsse treffe " erscheint es " .Treffe ich es nicht ,verschwindet es wieder.

    Hab folgendes gemacht

    Create fx_timer = 0

    Collision mit Schuss : fx_timer = 10

    Draw event ,..den vorgeschlagenden letzten Code.
  • GML-Quellcode

    1. if fx_timer>0
    2. {
    3. draw_set_alpha(1)
    4. draw_sprite_ext(sprite_enemy,image_index,x,y,image_xscale,image_yscale,image_angle,c_white,image_alpha) // zeichnet den gegner selbst
    5. draw_sprite_ext(sprite_enemy,image_index,x,y,image_xscale,image_yscale,image_angle,c_ltgray,fx_timer/10) // zeichnet das blinken (hellgrau, kA wie die farbe heißt)
    6. fx_timer -= 1
    7. }
    Dieser Beitrag wurde bereits 8.675.628 mal editiert, zuletzt von »levarris07« (Heute, 11:33)
  • Also leider funktioniert es immer noch nicht. Habe beide Codes ausprobiert. Immer wenn der " Draw " Event ins Spiel kommt hört das Gegnersprite

    a. ) auf permanent zum Player zudrehen , es bleibt auf einer Animationsstufe hängen bzw. fängt erst garnicht an sich zu Bewegen.

    und b.) Es ist unsichbar und erscheint nur wenn ich es mit den Schüssen treffe.

    Lasse ich den Draw - Event weg. Erscheint der Gegner ganz normal ( Also einfach in den Raum platziert ) und , dreht sich immer zum Player mit.

    Boh,..die Sache scheint ja doch etwas kniffliger zu sein das wie ich Anfang dachte. Da kommt man wohl um die Lösung mit der ganz Weißen Sprite nicht herum,...Oder?!

    Aufjedenfall Danke für's mit Grübeln und die Tipps.
  • Aaaalso, um das ganze mal etwas zusammenzufassen (hier schreibt ja jeder durcheinander)

    1. Du führst eine Variable (z.B. fx_time) ein.
    2. Diese wird dann jeden Step runtergezählt und über 0 gehalten.
    3. Wird der Spieler angegriffen, wird fx_time auf einen gewissen Wert > 0 gesetzt, damit die Animation abgespielt wird.
    4. Beim Drawen musst du vorher abfragen, ob z.B. fx_time mod 2 == 1 ist ("ist der Rest bei der ganzzahligen Division von fx_time durch 2 gleich 1", sprich: "Ist die Zahl ungerade?") und dann den Sprite hell zeichnen. (Wie du das machst ist dir überlassen, ich finde die Methode mit (3D) Nebel am vorteilhaftesten/flexibelsten)

    Damit du dir das etwas besser vorstellen kannst, hab ich mal ein Beispiel angehangen (Auf das Problem mit dem image_angle wird auch eingegangen).

    Kurzer Nachtrag: Mit der linken Maustaste aktivierst du den Effekt und mit Enter änderst du die Farbe.

    - Joex3
    Dateien
    • flicker.rar

      (9,74 kB, 70 mal heruntergeladen, zuletzt: )
    8|
  • Hi
    levarris07
    Frage am Rande: ist das eine Mad Cat, Drachen?
    Das ist ein Mech - Roboter. Den habe ich als Free 3d-Modell im Netz gefunden. Den habe ich dann animiert (Walk - Animation).
    Mit mein Zeichenprogramm habe ich dann die einzelne Teile bearbeitet und dann in Game Maker wieder zusammen gesetzt.
    Das war es auch schon.

    Gruss Drachen
  • Hi Leute,...

    sorry das ich erst jetzt antworte. Aber hab momentan zuviel Arbeit um die Ohren. So das ich die neuen Antworten bzw. Beispiele noch garnicht richtig Testen bzw. Ausprobieren konnte. Werde erst Sonntag dafür Zeit haben. Nur so als Info..... wollt halt nicht unhöflich erscheinen. Also sry,..für diesen Off-Topic hier.



    neogeo.
  • Benutzer online 1

    1 Besucher