Frage zum Ball-Respawn bei Breakout-Clone

  • GM 6

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

  • Frage zum Ball-Respawn bei Breakout-Clone

    Hallo.

    Seit etwa einem Monat beschäftige ich mich intensiver mit dem Game Maker (6.1 registriert) und GML.
    Ich habe mir auch durchaus erfolgreich einige Dinge selbst erarbeiten können, bin jetzt aber ein wenig
    am Ende meines „Lateins“.

    Ich habe mir aus verschiedenen Beispieldateien eine Art „Breakout-Engine“ zusammengebaut. Kollisionen mit den Steinen,
    Score- und Live-anzeige funktioniert bereits einwandfrei, ebenso Raumwechsel und die Steuerung des „Schlägers“ mit der Maus.

    Wenn ich den Ball im Raum mit „start moving in directions“ starte, funktioniert alles zufriedenstellend.

    Der Ball soll aber am Anfang immer in der Mitte des Schlägers sein und erst dann losgehen, wenn ich die linke Maustaste betätige.
    Der Ball soll also am Schläger „kleben“, also auch jedesmal, nachdem der Ball ins Aus ging.

    Dazu versuchte ich Folgendes:

    Das im Moment einzige Objekt mit hierfür relevanten Scripts ist das Objekt „ball“.

    Im Create-Event des Ball habe ich

    GML-Quellcode

    1. global.still=1


    im Step-Event des Balls habe ich

    GML-Quellcode

    1. if global.still=1 x=bat.x;
    2. if y>room_height && not sound_isplaying(boo) sound_play(boo);
    3. if y>room_height {x=bat.x; y=ystart; speed=0; global.still=1};


    und dann ist da noch ein seltsames Mouse Event for <unknown>:

    GML-Quellcode

    1. if global.still=1 {ball.speed=5; ball.direction=90;
    2. global.still=0}


    Wenn ich dieses Event durch das Event Left released ersetze, fliegt der Ball nicht mehr ins Spielfeld.

    Wo ist bitte der Fehler?

    Wichtig ist noch, dass ich später noch Power_Ups, wie beispielsweise eine Waffe zum Zerstören der Steine implementieren will,
    die
    ebenfalls durch die linke Maustaste ausgelöst werden sollen.

    Ich habe schon den Thread „Objekte aneinander binden“
    durchgearbeitet,
    komme aber, nicht zuletzt wegen noch begrenzter Kenntnisse in GML, nicht damit klar.


    Für jegliche Hilfe in dieser Sache bin ich dankbar.

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

  • Also auf den ersten Blick kann ich an dem Code nichts entdecken, was nicht funktionieren sollte
    (mal davon abgesehen, dass die Syntax recht abenteuerlich ist -
    aber das hält den GM nicht davon ab ihn trotzdem umzusetzen).
    Wenn der Fehler wirklich nur dann auftritt, wenn du das Mouse-Event änderst würde ich dir
    raten einmal nachzusehen, ob du das normale Mouse-Event dafür verwendest, oder das globale.
    Das reguläre Mouse-Event wird nämlich nur dann getriggert, wenn das Objekt welches den Code beinhaltet angeklickt wird.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Vielen Dank für Deine informative Antwort.

    Du hattest recht ... das "Mouse Event for <unknown>" ist tatsächlich ein "Mouse Event for Glob Left Released" gewesen.


    Ich habe es jetzt erst mal so gelöst, dass ich das Objekt "Schläger", wenn es denn das Power-Up zum Schiessen bekommen hat,
    durch ein neues Objekt ersetze, bei dem ich dann wieder eine neues
    Mouse Event for Glob Left Released, nämlich das Schiessen,
    definieren kann, solange das neue Objekt existent ist.

    Ich werde am Wochenende aber noch einige weitere Tests machen, bevor ich das Thema hier auf gelöst setze.