Problem mit Sprite im Draw-Event

  • Problem mit Sprite im Draw-Event

    Hi!
    Hab n kleines Problem mit nem Sprite:
    Ich will von nem Object über den Draw-Event sowohl das Sprite des Objectes als auch einen Energiebalken anzeigen lassen, was ja auch klappt, allerdings hab ich jetzt ein Problem:
    Bei dem Object handelt s sich um einen Gegner und ich hab diesem vorher per Code befohlen, dass er wenn er links vom spieler steht nach rechts schaut (über image_xscale) und umgekehrt, dass er eben immer zum spieler guckt.

    Was ich jetzt für image_xscale angebe spielt aber auf einmal keine Rolle mehr!?Woran liegt das?

    Habs natürlich schon vom Step-Event in den Draw-Event übertragen und habs auch schon vor, bzw. nach den draw_sprite Befehl gestellt(sogar mal beides gleichzeitig :/) aber irgendwie wills nicht.

    Thx für eure Hülfe!
  • dein problem ist warscheinlich das du beim draw dein gegner sprite reingemacht hast und dann klappt es nicht mehr
    1.du könntest einfach 2 bilder vom gegner machen und sie mit dem image_xscale ersetzten
    2.du könntest ein extra object für den energiebalken machen
    und dann beim zeichnen nicht self sondern das gegnerische object
    (dieses klappt glaub ich aber nur bei einem gegner)
    Die Schönheit liegt im Auge des Betrachters :D
  • du hast viele möglichkeiten das richtige sprite anzeigen zu lassen. ich würde es mit einer einfachen abfrage im draw-event versuchen:
    (die kusiven bereiche musst du durch die namen deiner variablen oder objekte ersetzen)

    if x < object_player.x
    {
    draw_sprite(sprite_linksschauend,-1,x,y);
    }
    else
    {
    draw_sprite(sprite_rechtsschauend,-1,x,y);
    }

    du musst nur 2 sprites für deinen gegner verwenden, nämlich einmal sprite_linksschauend und einmal sprite_rechtsschauend. diese version hat den vorteil, das du ohne grossen aufwand animierte Bilder verwenden kannst.
    wenn du nur ein bild verwenden willst frag einfach noch mal das würde auch gehen...
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Hmmm.....danke für die Hilfe, aber genau das versuche ich ja zu vermeiden :).Klar, könnte ichs auch so machen, aber ich will ja gerade eben nicht die ganzen Sprites verdoppeln, das kostet ja ne menge!Außerdem gehts doch bestimmt auch viel einfacher...

    Es ging ja immer bisher mit

    Quellcode

    1. if(x<obj_mileena.x)
    2. {
    3. image_xscale=1;
    4. }
    5. if(x>obj_mileena.x)
    6. {
    7. image_xscale=-1;
    8. }

    (obj_mileena ist der Spieler).

    Das hatte ich bisher im "Begin Step"-Event des Gegners, was ja auch geklappt hat, nur wenn ichs dann umsiedle auf den Draw-Event, weil ich eben den Draw-Event verwenden will um den Energiebalken anzuzeigen, dann scheint der Gamemaker auf einmal diese Zeilen einfach zu ignorieren weil xscale sich nicht mehr verändert obwohl ich das hier so stehen hab....!?
  • Zeichne dein Sprite im Draw-Event doch mit dieser Funktion (einfach reinkopieren, so wie ichs hier schreibe):

    Quellcode

    1. draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,0,image_blend,image_alpha);
    Einige meiner Spiele:
  • vom speicheraufwand ist es relativ wurst, ob du das bild nun vorgefertigt vorlädst, oder es dynamisch erstellen lässt.
    aber der befehl vom intercepter scheint mir doch das richtige zu sein für dein problem.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x