Hilfe für mein Game

  • Hilfe für mein Game

    Damit ich nicht für jedes Problem meines Games ein neues Thema erstellen möchte mache ich das alles in diesem hier:

    Mein derzeitiges Problem:

    Ich mache ein Game wo es auch Kämpfe geben soll (Screenshoot). Diese Kämpfe laufen so ab, das auf einer Seite der Spieler und auf der anderen Seite der Gegner ist. Beide können sich nur auf und ab bewegen (es gibt viele Monster die der Player im Laufe des Spiels für sich kämpfen lassen kann, deswegen gibt es auch Ausnahme das sich ein Monster z.B. frei oder seitwärts bewegen kann aber das tut jetzt nicht zur Sache). Ich habe für das Gegnermonster einen Path erstellt und am Ende dieses Paths greift es an (es schießt ein Schwert auf die Gegnerseite), wenn der Angriff klappt (also wenn das Schwert des Gegnermonsters das Monster des Players trifft dann soll die Energieanzeige sinken und genau das ist das Problem. Immer wenn ich eine Energieanzeige ertselle (Objekts > Monster des Players > other > Room start > Draw Health > Set Health to 100. Dann stelle ich ein das wenn der Player vom Gegner getroffen wird "Set Health relative to 80" und wenn ich dann im Game getroffen werde wird die Energieanzeige nicht gezeigt.

    Mir ist klar das ich was falsch mache (bin auch kein Profi) aber bitte helft mir damit mein Game bald fertig wird
  • schreib doch einfach "Set Health relative to -80".
    und noch ein Tipp: Wenn du schreibst -80 dann wird ja von 100 80 abgezogen(100-80=20) und beim zweitenmal wird ja dann 80 von 20 abgezogen(20-80=-40) das kann ja irgendwie nicht stimmen oder? ^^
  • Also mach ich jetz:

    Room start > set health to 100 > wenn er getroffen wird set health to -20 (oder zu relative -20 ?)

    EDIT: Und wie mach ich das. das die Energieleiste gezeigt wird ?
  • x bedeutet ja links/rechts (bewegung) und y oben/unten... und fabse hats dir schon hingeschrieben...
    x1= view_xview+10
    x2= view_xview+200
    y1= view_yview+10
    y2= view_yview+20
    und dan bekommst du eine healthbar... ich hoffe ich konnte dir wenigstens etwas helfen.
    Wir stehen zusammen und wir fallen zusammen
  • Also, jetzt geb ich auch mal meinen Senf dazu:

    1) Das ist das falsche Unterforum - "Technische Fragen" ist der Ort, an dem du solche Fragen stellen kannst.

    2) Fragen zu Healthbars lassen sich mit der Suchfunktion um Längen besser lösen

    3) Du könntest uns mal die Objekt-Informationen geben, daraus würden wir nämlich viel schlauer.

    Für mich klingt das ganze so, als hättest du Draw-Aktionen ins Step-Event gepackt - dass das nicht funzt ist ja klar. Das "Draw"-Event ist nämlich dasjenige, in dem ALLES am Objekt gezeichnet wird. Solltest du die Healthbar also über den Player zeichnen (Ich empfehle eher einen extra Controller ohne Sprite) musst du noch das hier einfügen:

    GML-Quellcode

    1. draw_sprite(sprite_index,image_index,x,y)

    Sonst verschwindet dein Player.


    Und da du fabses Code wohl nicht so richtig verstanden hast, erklär ich ihn dir jetzt mal ^^

    GML-Quellcode

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

    Alles in diesem Code muss durch diverse Werte ersetzt werden - hier sind sie:

    x1: Linkes Ende der Healthbar
    x2: Rechtes Ende derselben
    y1: Oberes Ende der Healthbar
    y2: Unteres Ende
    Die Höhe der Healthbar errechnet sich also mit y2-y1, die Breite mit x2-x1.

    Das anschließend eingefügte amount ist der Name der Variable, für die die Leiste gezeichnet wird - im regulären Fall ist das einfach "health", die vorgegebene Standart-Lebensanzeige.

    backcol ist der Hintergrund der Healthbar
    mincol Die Farbe, die die Healthbar am linken Ende (bei niedriger Lebensenergie) hat
    maxcol ist die Farbe, die die Healthbar am rechten Ende (bei voller Lebensenergie) hat

    direction gibt die Richtung an, in die die Healthbar abläuft (0=Von rechts nach links, 1=Von links nach rechts, 2=Von oben nach unten, 3=Von unten nach oben)

    Das Argument showback, welchem du entweder den Wert true oder den Wert false zuweisen kannst (Oder die Binärzustände 0 und 1), bestimmt, ob deine Healthbar massiv ist, oder nicht. In der Regel werden Healthbars massiv gezeichnet, um sie gut sichtbar zu haben, aber es gibt auch Fälle, in denen eine "hohle" Healthbar viel besser passt. Wird hier false eingefügt, wird die Frabe, die du anstelle von backcol eingefügt hast, unwichtig - sie wird ja nicht gezeichnet.

    Das Argument showborder kennt auch nur true und false und bestimmt, ob um deine Healthbar herum eine schwarze Linie gezeichnet werden soll, um sie besser sichtbar zu machen oder nicht.

    Du kannst dir das ganze auch in der GM-Internen Hilfe ansehen, um z.B. zu erfahren, wie die verschiedenen Farben heißen (c_red, c_green und c_white kennst du ja schon - im Grunde erkennst du alle Farben im Code an "c_") oder evtl. ein paar Denkanstöße für eine individuellere Healthbar zu erhalten - ein Dreieck wär ja auch mal was anderes :D . Gib einfach in der Suche in der Hilfe "draw_healthbar" ein, dann findest du, was du brauchst.


    Ich hoffe, ich konnte helfen, wünsch dir viel Erfolg beim proggen und heiße dich auch herzlich auf gm-d willkommen ^^
  • und bei dem ersten code für den controller ohne sprite wo durch soll ich da ersetzen ?

    EDIT: Oder gehts auch ohne Scripts, ich kenn mich da nicht so gut aus.

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

  • Du erstellst ein extra Controllerobjekt ohne Sprite, setzt es in deinen Raum und packst den draw_healthbar-Befehl ins Draw-Event des Controllers. Wenn du nun die oben beschriebenen Werte entsprechend angibst, wird deine Healthbar gezeichnet, du musst kein Draw-Event auf dem Player anlegen und kannst noch weitere globale Einstellungen über den Controller laufen lassen ^^

    PS.
    Ohne Scripts gehts auch:
    Draw Healthbar
  • ok, ich habe alles so gemacht. Und wenn jetzt der Kampf los geht ist die Healthbar da (sie ist orange) und wenn ich getroffen werden vom Gegner dann sinkt sie nicht sondern der room startet neu. Was habe ich falsch gemacht ?
  • ich hab das jetz ohne code gemacht, ich habe:

    Ein objekt ohne sprite erstellt und dann bei dem objekt ein draw-event mit draw healthbar drin, die draw healthbar mit den werten von Eddysoulo
  • Ich hab dir jetzt mal ein Example gemacht, vollständig in GML.
    Drück F1, um die Hilfe aufzurufen und lies dir die Kommentare in den Codes durch, um zu verstehen, wie sie funktionieren - die Hilfe kann dir auch helfen (ach echt?)
    Falls du etwas am Example trotz der Masse an Kommentaren nicht verstehst, schick mir am besten eine PN, anstatt im Thread zu antworten ;)

    Edit @ Tobi97:
    Jep, meinte ich - ist aber unwichtig^^
    Dateien