Healtbalken sieht man doppelt

  • GM 7

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

  • Healtbalken sieht man doppelt

    Also, mach grad ein Shooter Zweiplayer Game
    und dazu hab ich ein Splitscreen gemacht, einen für player1 und einen für player2 und noch oben eine leiste wo die healthbar mitwandert
    Ich hab 3 Views benutzt, einer verfolgt Player1, einer PLayer2 und der dritte die Healthbar aber am anfang seh ich die healtbar immer doppelt, einmal vom 3. view und einmal weil die halt links oben in der ecke ist und da auch der player startet.

    Jetzt meine Frage:
    Gibt es eine Möglichkeit, wie man die Healthbar in die linke obere Ecke kleben kann und da dann immer bleibt, also dass die im view vom player1 immer links oben bleibt, aber immernoch den player1 verfolgt und nicht die healthbar
    hoffe das ist verständlich genug, wenn es nicht geht, dann schreib ich hier mal die werte rein und vllt seh ihr dann woran es liegt

    Danke
    Gruß Stefan

    Ps: wenns nicht verständlich ist, bitte nachfragen^^ :D :D :D
    Gruß Gamer
  • Ich denke, der 3. View ist überflüssig.

    Bastel in das Draw_Event deiner Healthbar folgenden Code:

    GML-Quellcode

    1. if (view_current==0) // Bin ich in View 0?
    2. {
    3. hp=obj_spieler1.hp; // Zeige Health vom ersten Spieler
    4. } else { // Bin ich in View 1?
    5. hp=obj_spieler2.hp; // Zeige Health vom zweiten Spieler
    6. }
    7. draw_healthbar( // Zeichne die Healthbar
    8. view_xview[view_current], // in die linke obere Ecke des Views
    9. view_yview[view_current],
    10. view_xview[view_current]+100, // in den Maßen 100*20
    11. view_yview[view_current]+20,
    12. hp,
    13. c_black,
    14. c_red,
    15. c_green,
    16. 0,
    17. 1,
    18. 1);
    Alles anzeigen


    Objekt- (obj_spieler1, obj_spieler2) und Variablennamen (hp) musst du natürlich an dein Spiel anpassen.
    Einige meiner Spiele:
  • danke erstmal, aber...

    ...es funktioniert nicht:

    und zwar
    obj_spieler1.hp wäre bei mir objPlayer1.hp
    aber das funktioniert nicht, da sagt es unknown variable hp und zwar genau in der zeile
    und zwar genau an Stelle 26 bei dem Code, das ist das objPlayer1.hp
    das fettgedruckte hp ist gemeint
    Gruß Gamer
  • Fehlerlösung in 2 Schritten:
    1. Existiert die Variable hp auch beim Spielerobjekt oder heißt die da anders? Im Create Event müsste hp=100 oder sowas stehen, damit die Variable existiert.
    2. Hast du auch eine Instanz des Spielerobjekts im Room platziert?
    Einige meiner Spiele:
  • achso, hatte die variable hp nicht, aber jetzt hab ich sie und er "meckert" wo anders

    Quellcode

    1. if (view_current==0) // Bin ich in View 0?
    2. {
    3. hp=objPlayer.hp; // Zeige Health vom ersten Spieler
    4. } else { // Bin ich in View 1?
    5. hp=objPlayer2.hp; // Zeige Health vom zweiten Spieler
    6. }
    7. draw_healthbar( // Zeichne die Healthbar
    8. view_xview[view_current], // in die linke obere Ecke des Views
    9. edit: funktioniert jetzt doch, zieht allerdings kein Leben mehr ab
    10. view_yview[view_current],
    11. view_xview[view_current]+100, // in den Maßen 100*20
    12. view_yview[view_current]+20,
    13. hp,
    14. c_black,
    15. c_red,
    16. c_green,
    17. 0,
    18. 1,
    19. 1);
    Alles anzeigen


    und zwar in zeile 13 (hp, variable unknown obwohls die ja eig. gibt, einmal für player1 und einmal für player2)


    edit: geht jetzt doch, allerdings zieht es keine hp ab, obwohl im kollisionsevent mit obj_bullet set health to -7 relative
    Gruß Gamer

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von The Gamer ()

  • Im Kollisionsevent hast du dann wohl auch die falsche Variable herabgesetzt. Da muss dann natürlich auch hp anstatt health stehen.
    Wenn du ein bisschen mitdenkst, sollte dir das eigentlich auffallen, dass health nirgendwo gezeichnet wird, sondern eben hp. Hat den Grund, dass health eine vom Game Maker bereitgestellt GLOBALE Variable ist. Global bedeutet, dass sie nicht mit dem Objekt zusammenhängt, sondern für alle gilt. Ist natürlich schlecht, wenn mit einem Treffer alle Figuren Energie verlieren, deshalb benutzt du in dem Fall eine eigene Variable namens hp.
    Einige meiner Spiele:
  • stimmt, aber muss da erstmal reinkommen, mach ja noch net mal ne Woche Gm
    aber wie setz ich die variable meine eigene, realtiv
    bei mir setzt jetzt direkt auf -7 und nicht relativ auf -7
    Gruß Gamer

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

  • Wenn du das auch mit Code schreiben willst, dann schreibe entweder

    GML-Quellcode

    1. hp=hp-7;

    oder

    GML-Quellcode

    1. hp-=7;

    Kleiner Tipp. Um so grundlegende Dinge zu lernen, ist es empfehlenswert die deutsche Hilfe durchzulesen. In unserem Tutorialarchiv gibt es ebenfalls gute Einstiegshilfen. Das Standardwerk dürfe das hier sein: GML - Die Einsteigerreferenz
    Ich selbst habe mich auch mal an einem Tutorial versucht. Richtet sich zwar an Leute, die schon in anderen Sprachen Erfahrung gesammelt haben, sollte aber auch für Anfänger eigentlich verständlich sein: interceptors GML Lernprojekt
    Einige meiner Spiele:
  • Bei dieser GML - Einsteigerreferenz hab ich mal angefangen, das erste hab ich schon durch, den 2. Teil bin ich grad iwo in der Mitte
    und die deutsche Hilfe, da find ich nie was, ich finde da nur so allgemeine sachen über skripte und so, aber so was wie das hier finde ich nie, wie sucht man danach:

    gm-d.de/help/hh_start.htm?402_02_real.html

    edit: aber wie frag ich jetzt hab if hp<=0 in welches event muss das, ins Step?

    edit2: was ich auch wissen wollte, ist, was man einstellen muss dass ein Spieler vor einer Wand stehen bleibt, bei "move to contact" funktioniert das zwar, aber wenn ich mich seitlich in ne bestimmte Richtung hinstelle, dann beamt er sich ans andere ende vom room
    ?( ?( ?(
    Gruß Gamer

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von The Gamer ()

  • The Gamer schrieb:

    Bei dieser GML - Einsteigerreferenz hab ich mal angefangen, das erste hab ich schon durch, den 2. Teil bin ich grad iwo in der Mitte
    und die deutsche Hilfe, da find ich nie was, ich finde da nur so allgemeine sachen über skripte und so, aber so was wie das hier finde ich nie, wie sucht man danach:

    gm-d.de/help/hh_start.htm?402_02_real.html

    edit: aber wie frag ich jetzt hab if hp<=0 in welches event muss das, ins Step?

    edit2: was ich auch wissen wollte, ist, was man einstellen muss dass ein Spieler vor einer Wand stehen bleibt, bei "move to contact" funktioniert das zwar, aber wenn ich mich seitlich in ne bestimmte Richtung hinstelle, dann beamt er sich ans andere ende vom room
    ?( ?( ?(
    Du solltest nicht die vorgegebene "health" variable benutzen, die gibt es nur 1 mal soweit ich weiss. Benutz stattdessen überall sowas wie "hp".

    Das if(hp<=0) kommt ins StepEvent, danach eine geschweifte Klammer um einen Block anzufangen, dann alle Aktionen schreiben, eine geschweifte Klammer zu und fertig.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Benutzer online 1

    1 Besucher