Probleme mit der Depth Ebene und Draw Sprites

  • GM 8

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

  • Probleme mit der Depth Ebene und Draw Sprites

    Ich bin dabei einen Platformer zu basteln, welcher am unteren bildrand eine dynamische anzeige für leben und erfahrung hat.


    der code ist als draw event im obj_player folgendermaßen umgesetzt:



    Quellcode

    1. if (visibl==true) {draw_sprite(sprite_index,floor(image_index),x,y);}
    2. draw_sprite(spr_hp_bar,0,view_xview+3,view_yview+445);
    3. draw_sprite(spr_exp_bar,0,view_xview+645,view_yview+445);
    4. draw_sprite_stretched(spr_hp_fill,0,view_xview+54,view_yview+454,hp/hpmax*hpscale,14);
    5. draw_sprite_stretched(spr_exp_fill,0,view_xview+651,view_yview+454,expcurrent/expmax*expscale,14);
    6. draw_set_font(Health);
    7. draw_set_halign(true)
    8. draw_text((view_xview+50)+hpscale/2,view_yview+453,string(hp));
    9. draw_text((view_xview+655)+expscale/2,view_yview+453,string(expcurrent));
    10. draw_set_halign(false)
    11. draw_set_color(c_white);
    Alles anzeigen




    obj_player hat eine Depth von 0, so gut wie alle anderen objects und tiles haben eine Depth von 1, machen also kein Problem. Allerdings habe ich Wasser und Fallen als objekte erstellt, "hinter" denen der Player sein soll, diese 2 Sachen haben also eine Depth von -1. Problem ist nun, dass diese Sachen nun aber auch vor der Lebens und Erfahrungsanzeige auftauchen wenn die Sachen sich schneiden.


    Ich wollte das Problem jetzt lösen, indem ich ein neues objekt erstelle mit Depth -10 und eben in dieses die Lebens und Erfahrungsanzeige auslagere. Das bekomme ich aber nicht hin, was muss ich da am Ausgangscode ändern, damit die Anzeige dann weiterhin dynamisch auf Obj_Player reagiert?


    Oder gibt es eine andere Lösung für dieses Problem? (z.b. den draw_sprites im code eine Depth zuzuweisen?)
  • Erst einmal herzlich willkommen im Forum!

    wii07 schrieb:

    Oder gibt es eine andere Lösung für dieses Problem? (z.b. den draw_sprites im code eine Depth zuzuweisen?)

    Das funktioniert leider nicht in einem Draw Event (im Step schon, aber dann wird der Player auch mit der neuen Depth gezeichnet).

    Mach es wie gesagt mit nem neuen Objekt mit der niedrigsten Depth und dort kannse dann auf die Variablen des Players zugreifen, mit

    GML-Quellcode

    1. obj_player.variable // obj_player ist der Name des Playerobjektes
    2. // Beispiel (Musse dann eben auf deinen Code anpassen):
    3. draw_text(32, 32, string(obj_player.hp));


    edit: Mist, da war wohl jemand schneller :D

    - Tobi97
  • obj_player hat eine Depth von 0, so gut wie alle anderen objects und
    tiles haben eine Depth von 1, machen also kein Problem. Allerdings habe
    ich Wasser und Fallen als objekte erstellt, "hinter" denen der Player
    sein soll, diese 2 Sachen haben also eine Depth von -1.
    Meines Wissen sind Objekte die eine kleiner Tiefe haben, vor anderen Objekten als die die eine größere Tiefe haben. -1 wird dann vor 0 gedrawt.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Erstmal danke für die Tipps, mache es jetzt über eine neue object datei mit depths -100. habe die anzeige selber hinbekommen mit dem code:


    Quellcode

    1. draw_sprite(spr_hp_bar,0,view_xview+3,view_yview+445);
    2. draw_sprite(spr_exp_bar,0,view_xview+645,view_yview+445);




    die anzeige für die lebenspunkte habe ich auch hinbekommen:



    Quellcode

    1. draw_text((view_xview+125)+hpscale/2,view_yview+453,string(obj_player.hp));
    2. draw_text((view_xview+730)+expscale/2,view_yview+453,string(obj_player.expcurrent));




    was ich nicht hinbekomme ist der farbige fortschrittsbalken für leben und exp:



    Quellcode

    1. draw_sprite_stretched(spr_hp_fill,0,view_xview+54,view_yview+694,hp/hpmax*hpscale,14);
    2. draw_sprite_stretched(spr_exp_fill,0,view_xview+1076,view_yview+694,expcurrent/expmax*expscale,14);




    ich verstehe da nicht, wo ich da den obj_player. reinsetzen muss damit auf dessen werte bezug genommen wird.
  • ich habs hinbekommen:



    Quellcode

    1. draw_sprite_stretched(spr_hp_fill,0,view_xview+54,view_yview+400,obj_player.hp/obj_player.hpmax*obj_player.hpscale,14);
    2. draw_sprite_stretched(spr_exp_fill,0,view_xview+1076,view_yview+694,obj_player.expcurrent/obj_player.expmax*obj_player.expscale,14);




    so gehts.

    btw.: wie kann man einen thread als gelöst markieren?
  • Benutzer online 1

    1 Besucher