Ich bekomme das mit den Leben nicht hin

  • Ich bekomme das mit den Leben nicht hin

    Moin,
    ich bekomme das mit den Leben nicht hin, in der leiste steht dann immer 1-3 obwohl ich das so haben wollte, das die Spielfigur nur 3 hat. Folgendes habe ich im Game Start event der Spielfigur gemacht:



    Und so sah das in der leiste aus:



    habt ihr den Fehler? ich komme einfach nicht weiter, auch die Hilfe hat mir nichts geholfen.
    Danke im voraus:-)

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

  • Du musst dein Controllerobjekt schon auf Visible setzen! Außerdem darfst du da nicht "Lives: 3" sondern musst "Lives: " schreiben. Die Lebensanzahl wird automatisch ergänzt. Die Anzahl setzt du mit .

    Alternativ empfiehlt es sich, GML-Code zu verwenden, um diesen 32x-Effekt von Supermario World zu erhalten. Dazu einfach:

    GML-Quellcode

    1. draw_text(20, 20, string(lives) + "x") //Zeichne den Text "LIVESx" auf Position 20/20 (x/y)

    Natürlich kannst du auch noch die Textfarbe und die Schriftart manipulieren.
  • Original von Lahm
    Und wenn jezt die Spielfigur an ein gegner kommt, muss uch dann im draw event des gegners das hier und dann -1?
    Nein. Einfach direkt im Kollisionsevent (oder wo auch immer die Berührung drin ist) das ganze mit -1 ausführen und den Relative-Haken nicht verhessen. Alternativ kann ich dir das Ganze noch im GML sagen:

    GML-Quellcode

    1. lives-=1
  • Also ich bin jezt in den collisionsevent gegangen und habe dort dann mit diesem zeichen
    -1 rengeschrieben und dann die checkbox, relativ, aktiviert.
    und das sah dann so aus:

    aber ich habe das noch nihct so hnbekommen, das wenn ich gegen den Gegner komme, das dann ein leben weggeht. zwar sind die leben schon da aber sie gehen wiegesagt nicht wech

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

  • So funktioniert das auh nicht. Nimm das mit dem Restart raus und dann geh ins Stepevent. Dort kommt dann eine if-Schleife rein, die abfragt, ob die Leben gleich 0 sind. Wenn sie das sind, wird der Raum neu gestartet. Außerdem muss bei der Kollision das Gegnerobjekt vernichtet werden.
  • Das geht doch auch alles in Drag and Drop^^
    Nen Code brauchste nicht unbedingt. Ich hab mal ne veränderte Version der gm6 angehängt.
    Ich denke, dass die Befehle sich von alleine erklären.
    Veränderte sachen befinden sich im Objekt "ply_sprite_contr_obj".
    Dateien
    • Leben.rar

      (7,1 kB, 107 mal heruntergeladen, zuletzt: )
  • ok, das hat alles geklappt mit den leben, das die weniger werden. Aber wenn ich in den nächsten raum gehe, hat die spielfigur wieder 3 leben obwohl sie davor (bsp) 2 Leben hatte. Wie kann an das noch ändern
  • Mit ein bisschen nachdenken könntest du alle deine Probleme alleine lösen... :no:
    naja.

    Erstell ein neues Objekt und nenn es meinetwegen obj_control oder wie du willst.
    In das Create Event von dem Objekt stellst du die Leben auf 3 und löscht das Create Event des Spielers. Dieses Control Objekt steckst du dann in den ersten Raum deines Spiels und fertig.

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

  • 1. Du musst die Leben als globale Variable anlegen.
    2. Du darfst die Leben nicht am Anfang jedes Levels wieder auf 3 setzen.

    Okay, du verwendest die vordefinierten Leben des Gamemakers also hat sich das mit der globalen Variable bereits.

    Das zweite ist demnach der Grund! Du hast in irgendeinem Event, das an jedem Levelanfang ausgeführt wird definiert, dass die Leben auf drei gesetzt werden. Am besten ist: Du machst ein Objekt, nennen wir es mal "life_control" und packst ins Create Event dass die Leben auf drei gesetzt werden. Dieses Objekt tust Du jetzt nur in den ersten Level des Spiels oder auf den Titelbildschirm etc. .
    Das Event welches die Leben in deinem Spielerobjekt festlegt entfernst Du jetzt einfach. Schon müsste das Problem weg sein.

    €dit:
    Mist, war wieder einer schneller... aber immerhin ist der Lösungsansatz derselbe. Übrigens hat mein Kollege oben recht: Mach dir mal selber etwas mehr Gedanken. Du müsstest eigentlich auch selbstständig darauf kommen, dass die Leben immer auf drei gesetzt werden weil dein Spielerobjekt pro Level neu createt wird und somit auch die Leben wieder auf drei setzt.

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

  • cool danke an allen die mir geholfen haben :-)

    aber eine Frage habe ich noch. Kann man das so machen, das die leben mitlaufen, wenn der View z.B. nach rechts läuft? weil man sonst irgentwann die leben nicht mehr sieht

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

  • Klar. Entweder:
    a) Du packst die Leben in eine eigene View (empfehlenswert wenn Du ein ganzes HUD baust)
    b) Du bewegst die Leben mit der View mit (in deinem Fall die einfachere Lösung)

    Ich bin jetzt in diesem Augenblick nicht absolut sicher ob das genau so geht, konzeptionell geht das aber so:
    Du nimmst das Objekt, das die Leben im Draw-Event zeichnest und gibst an, das sie an der relativen position x,y gezeichnet werden (also 0,0 lassen, aber relative anklicken). Nun packst Du noch ins EndStep-Event dieses Objekts dass die Variable x auf view_xview und y auf view_yview gesetzt wird (oder packst noch ein paar Pixel hinzu indem Du sagen wir mal "x = view_xview+32" setzt, damit die Leben nicht ganz am Bildrand gezeichnet werden). Müsste alles sein.