Draw life image (verschiedene)

  • GM 8
  • Also erstmal solltest du ne gescheite Problem und Fragestellung formulieren, denke dabei immer daran, wir wissen nicht um was es genau geht, wie dein Projekt aussieht und wie gut du dich mit dem Game Maker auskennst!!!

    Deine Frageformulierung hab ich auch noch dem 4 mal durchlesen nicht wirklich verstanden,... wenn ich raten müsste würde ich sagen das du mehrere Healthbars hast
    draw life image, macht überhaupt keinen sinn,.... :(

    wenn du die healthbar funktion benutz kannst du die farbe selbst wählen

    draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,showborder)

    Mit dieser Funktion kannst du eine Lebensanzeige (oder irgendeine andere Anzeige, die einen Wert angibt. z.B. den Schaden) zeichnen. Die Argumente x1, y1, x2 und y2 geben den gesamten Bereich der Anzeige an. amount gibt an, wieviel die Anzeige anzeigen soll (mus zwischen 0 und 100 liegen). backcol ist die Hintergrundfarbe der Anzeige. mincol und maxcol geben die Farben an, in denen die Anzeige gezeichnet wird, wenn amount 0 bzw. 100 ist. Wenn amount zwischen 0 und 100 ist werden die Farben ihren Anteilen entsprechend gemischt, folglich kann man sehr leicht eine Anzeige machen, die ihre Farbe von Grün nach Rot verändert. direction gibt an, in welche Richtung die Anzeige steigt (0 = von Links nach Rechts, 1 = von Rechts nach links, 2 = von Oben nach Unten, 3 = von Unten nach Oben). Schließlich gibt showback an ob der Hintergrund angezeigt werden soll und showborder, ob die Anzeige einen Schwarzen Rand haben sollen.


    Es existieren viele vordefinierte Farben:

    c_aqua
    c_black
    c_blue
    c_dkgray
    c_fuchsia
    c_gray
    c_green
    c_lime
    c_ltgray
    c_maroon
    c_navy
    c_olive
    c_purple
    c_red
    c_silver
    c_teal
    c_white
    c_yellow


    Grüßle Blayde
  • allso erkläre es mal RICHTIG???


    So,es sind 10 leben alle Grün,wenn ich ein leben verliere habe ich dann 9.
    Aber die letzten der 10 leben sollten gelbe und Rote sein.

    es ist draw life image : es solLten 2 Rote 3 Gelbe 5 Grüne sein und nicht 10 Grüne Leben images

    bild eingefügt : so soll es sein
    Bilder
    • life.JPG

      43,27 kB, 592×273, 112 mal angesehen

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

  • Mit Drag&Drop ist sowas schwer zu machen, weil es da nur eine Art von Programmschleife gibt (nämlich repeat) - was du hier brauchst, ist die berühmt-berüchtigte for-Schleife.
    Dabei nimmst du eine Variable als "Zähler" und führst die Schleife so lange aus, bis dieser Zähler seinen Endwert erreicht hat - in deinem Fall 10. Man kann mit diesem Konstrukt auch noch spaßigere Sachen machen als einfach nur zu zählen, aber das sind dann schon Spezialfälle.
    Ein möglicher Code für dein Problem wär also:

    GML-Quellcode

    1. var i,col; // Diese Variablen verfallen, sobald der Code fertig gelaufen ist.
    2. for(i=0;i<10;i+=1){ // Die Schleife wird 10 Mal durchlaufen, i kriegt also die Werte 0 bis 9
    3. col=c_lime; // Standardfarbe
    4. if i<5 col=c_yellow; // Farbe für weniger als 5 HP
    5. if i<2 col=c_red; // Farbe für die untersten beiden HP
    6. draw_sprite_ext(/*Dein Sprite hier*/,/*Dein image index hier*/,x+i*/*Deine Sprite-Breite hier*/,y,1,1,0,col,1);
    7. // col wird hier für "image_blend" eingesetzt, mit dem man Sprites quasi bei laufendem Spiel neu einfärben kann.
    8. }
  • dann nimm draw_sprite falls das auch genug funktionen hat
    (die frage habe ich nämlich auch immer noch nicht verstanden)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • GML-Quellcode

    1. var i,col; // Diese Variablen verfallen, sobald der Code fertig gelaufen ist.
    2. for(i=0;i<10;i+=1){ // Die Schleife wird 10 Mal durchlaufen, i kriegt also die Werte 0 bis 9
    3. col=c_lime; // Standardfarbe
    4. if i<5 col=c_yellow; // Farbe für weniger als 5 HP
    5. if i<2 col=c_red; // Farbe für die untersten beiden HP
    6. draw_sprite(energy,0,view_xview+72+i*16,view_yview+20)
    7. // col wird hier für "image_blend" eingesetzt, mit dem man Sprites quasi bei laufendem Spiel neu einfärben kann.
    8. }


    probleme


    Alle farben grün und verliere keinen balken :headtouch: :headtouch: :headtouch:

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

  • Nargh, sorry, dass draw_sprite_ext ne Pro-Funktion ist, hab ich glatt vergessen. Aber da kannst du drumrumarbeiten:
    Mach aus deinem Segment-Sprite eins mit drei Sub-Images. Das erste färbst du Grün, das zweite Gelb, das dritte Rot. Und dann änder den Code wie folgt ab:

    GML-Quellcode

    1. var i,img;
    2. for(i=0;i<10;i+=1){
    3. img=0;
    4. if i<5 img=1;
    5. if i<3 img=2;
    6. draw_sprite(foo,img,x,y);
    7. }

    Also änder den Image-Index statt das Image-Blend.

    Und wenn du deine tatsächlichen HP anzeigen lassen willst, ersetz die 10 im Kopf der Schleife einfach durch den Namen deiner HP-Variable.


    Edit:
    Kleiner syntaktischer Fun-Fact: Du kannst den Image Index auch so setzen:

    GML-Quellcode

    1. img=(i<5)+(i<3);

    Der Grund dafür ist, dass (i<5) und (i<3) Boolean-Ausdrücke sind, also entweder true oder false entsprechen (1 oder 0). Man kann sie also einfach zusammenzählen und kommt so auf 1, wenn i<5 und auf 2, wenn i<5 und i<3, ansonsten auf 0. Und das entspricht genau dem anderen Code. Interessant, oder? ^^