Breakout clone und die Ball Physik

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

  • Breakout clone und die Ball Physik

    Hallo zusammen!

    Dies ist mein erster Thread in diesem Forum, also seit bitte nicht zu hart mit mir. ;)

    Seit ein paar Tagen versuch ich nun endlich, mein erstes Game mit dem GM 7.0 Lite zu gestalten. Es soll ein Breakout Clone werden, aber eher in Richtung Krakout (altes C64 Game). Bisher bin ich eigentlich durch viel Sucherei im Netz und durch viele Tutorials doch schon sehr weit gekommen, aber andauernd stösst man auf ein Problem; ihr kennt das sicher?

    Die meisten Sachen habe ich bisher gemeistert und bin auch so zufrieden damit, trotz Drag & Drop Programmierung. Jetzt kommen aber so langsam die eigentlichen Probleme: Die Ball Physik!!! Ich denke, das es so langsam Zeit wird mit Codes, Variablen oder einfach nur GML zu arbeiten!?

    Nun zum eigentlichen Problem: Krakout war im Gegensatz zu Breakout von links nach rechts, was ja eigentlich noch kein Problem darstellt. Nun gefällt mir aber diese Kollision mit dem Paddle (Schläger) nicht wirklich, da "Bounce against solid objects" ziemlich schnell langweilig wird!!!

    Wie kann man es also machen, das das Paddle den Ball beim Abprallen auch richtig weg schießt, d.h. wie klappt es, das das Paddle den Ball, wenn der Ball unten kollidiert, auch nach unten weg springt, bzw. wenn er oben dran springt auch nach oben weg springt?

    Auch das Anschneiden des Balles wäre eine sehr feine Sache, damit man den Ball besser kontrollieren kann!!! Nur mit Drag & Drop komme ich da nicht mehr weiter.

    Im Forum selber habe ich viele Threads gelesen, doch keiner brachte mich wirklich weiter.
    Was glaubt ihr ist die Beste Methode für so ein Ballverhalten!?

    1. runde Maske fürs Paddle?
    2. ein Script!??
    3. ein abgerundetes Paddle?
    4. sonst noch was? ?(

    Wer eine Idee hat, nur her damit, wäre sehr dankbar. :D

    Danke schon mal im Voraus!!!

    LG Mario*
  • Führ einfach diesen Code im Ball aus, wenn er mit dem Paddle kollidiert. Der Code funzt so nur, wenn das Paddle links ist. Für "obj_paddle" musst du den Namen des deines Paddle-Objekts einsetzen. Für strength einfach einen Wert deiner Wahl (ich würd was zwischen 1 und 4 empfehlen). Dieser Wert gibt an, wie stark der Abprallwinkel ist.

    GML-Quellcode

    1. direction=(obj_paddle.y-y)*strength;
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Vielen Dank erst mal für Deinen Vorschlag, aber leider funzt es so nicht! Vielleicht liegt es auch an mir und der Umsetzung!? ;)

    Der Ball prallt zwar ab, aber immer nur noch geradeaus, d.h. immer von links nach rechts und wieder zurück!!! Mann würde ihn nie mehr schräg wegbekommen.... ?(

    Was nun sprach Zeus!?
  • Klar, da magst Du sicher recht haben..., aber die Sache ist die: Wenn das Paddle sich gerade entgegengesetzt zum Ball bewegt, dann müsste es doch den Ball anschneiden, oder!? So war das zumindest früher in Krakout! Diesen Anschneide Effekt hätte ich schon gerne... ;(

    Wenn sich der Ball immer nur "Einfallswinkel gleich Ausfallswinkel" verhält, dann ist es einfach langweilig.... :O
  • Also die Idee von mauge stimmt schon, nur muss die Umsetzung dann auch stimmen ;)
    1. Der Origin des Paddles muss in der Mitte sein (Beim Paddle Sprite auf den "Center" Knopf drücken)
    2. Der Origin des Balls muss auch in der Mitte sein
    3. Der Code nach der Kollision mit dem Paddle muss so lauten:

    GML-Quellcode

    1. direction+=(obj_paddle.y-y)*strength;


    Dragoon
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Danke für den Tip, aber wenn ich es so mache, dann bleibt der Ball am Paddle kleben...!?
    :?:

    Vielleicht habe ich es nicht richtig gemacht...!? Was meinst Du denn mit "Center-Knopf" und was bitte ist "Orgin"!?

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

  • Im Anhang ist ein zipfile mit einem Beispiel, gucks dir einfach mal an ;)

    Dragoon

    (Origin ist der Punkt, welcher als 0-Punkt eines Sprites angesehen wird.)
    Dateien
    • beispiel.zip

      (2,06 kB, 169 mal heruntergeladen, zuletzt: )
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • Wow, so klappt es schon mal ganz gut, danke! Ganz so 100% bin ich zwar noch immer nicht zufrieden, aber das war bisher der beste Weg!!! Vielen Dank!!! Leider spinnt das Ball Sprite jetzt ein wenig und zappelt manchmal...., aber erst mal egal. Sag mir nur noch eins: WO ist der Center-Knopf!?? Vielleicht ist es dann ja perfekt!?? ;)

    DANKE!!!

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

  • Original von Dragoon
    Also die Idee von mauge stimmt schon, nur muss die Umsetzung dann auch stimmen ;)
    1. Der Origin des Paddles muss in der Mitte sein (Beim Paddle Sprite auf den "Center" Knopf drücken)
    2. Der Origin des Balls muss auch in der Mitte sein
    3. Der Code nach der Kollision mit dem Paddle muss so lauten:

    GML-Quellcode

    1. direction+=(obj_paddle.y-y)*strength;


    Dragoon


    Eigentlich musst du das nicht zur Richtung addieren, da sie ja auf 0 +/- Winkel gesetzt werden soll, aber wenn es so klappt, ist es gut!^^

    @mariosun: Was Dragoon mit Origin meint, ist in deinen Sprite-Settings.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Danke mal an alle für Eure Hilfe!!! Freut mich, das hier die Cracks solchen Loosern wie mir helfen. Wenn ich Euch grafikmäßig einen Gefallen tun kann, dann sagt es nur, denn da kenne ich mich sehr gut aus. ;)

    Ich schließe den Thread (als gelöst) aber trotzdem noch nicht, da ich noch gespannt bin, ob jemand anderes noch eine andere Lösung kennt/weiß/hat!? Im Grunde genommen könnte ich es auch so lassen, aber irgendwie bin ich noch nicht so ganz überzeugt vom Ergebnis.

    @ mauge & dragoon: :top:
  • Du kannst uns auch gern mal die GMK-Datei geben. Dann könnten wir uns das genauer ansehen und uns ein besseres Bild machen.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Hört sich gut an. Ich bastel noch ein bisschen und dann lad ich es mal hoch für Dich bzw. ich schick es dir persönlich. Wenn Du magst, dann schau es Dir an und sag mir, was Du noch besser machen würdest. Fände ich sau gut und vor allem sehr nett. KLASSE!!! :happy: