Pong -.-

  • GM 6

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

  • Hi,
    ist schon lange her, dass ich mit dem GM (richtig) gearbeitet habe. Ich glaube mindestens ein Jahr... Jetzt will ich wieder mit etwas Einfachem anfangen und mein erster Einfall war Pong. (Naja, einfach? Ich hab noch Partikeleffekte eingebaut *g*)
    Mein Problem: Der Ball fliegt immer nur nach links und rechts. Was ist die beste Möglichkeit, den Ball woandes hinfliegen zu lassen?

    edit: Ich arbeite mit GML. Nur manchmal vergesse ich die Codes und benutze deshalb Drag 'n Drop, z.B. für Move- oder Bounce-Events...
  • Wohin willste den ball den fliegen lassen?
    Wenn du eine zufällige Richtung von 0° bis 360° haben willst:

    GML-Quellcode

    1. direction=random(360)

    Wenn du zufällig eine der vier diagonalen Richtungen willst:

    GML-Quellcode

    1. direction=choose(45,135,225,315)
  • wenn ebitte mal den code psoten den du ahst.....

    wenn einfach in eine richtung mach einfach bei collision ne randomdirection.
    über dem schläger(nach oben) ist glaube ich zwischen 0und 180 oder so
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • Das mit der runden Mask ist nicht so zu empfehlen! Mach besser eine Berechnung! Und zwar teilst du erstmal die Breite deines Sprites durch zwei. Und jetzt kannst du sagen, dass der Ball nach einem bestimmten Winkel von deinem Paddle abspringen soll, welches durch den Abstand des Balls zu deinem Paddlemittelpunkt berechnet wird. Also anders gesagt: Kommt der Ball exakt in die Mitte des Paddles, so springt er direkt nach oben. Je mehr er aber links bzw. rechts vom Mittelpunkt des Paddles aufprallt, desto mehr/weniger Grad hat auch der abprallwinkel. Eine solche Berechnung verwenden praktisch alle guten Pong's, da man so den Ball lenken kann.

    MfG flogy
  • Zuerst wollte ich TrunX' Lösung ausprobieren, der Ball soll aber nicht irgendwo hinfliegen und auch nicht jedesmal in eine diagonale Richtung abprallen, also hab ich's gelassen. Wollte antworten und plötzlich seh ich das mit der Mask *g* Hat aber nicht funktioniert. flogy hat das genannt, was ich haben will(naja, wenn er in irgendeine Richtung abprallt(also wenn der Ball den rechten Paddle berührt irgendwie nach links oder so) würde mir schon reichen), weiß aber nicht, wie ich ich das realisieren kann... Mein Pong ist übrigens horizontal (ich hoffe, ich verwechsel nicht schon wieder Horizontal und Vertikal. Gemeint ist waagrecht.)
    mfg FlashX
    edit: Meine Paddles haben die größe 9x64(aus den GM-Sprites als Platzhalter). Mittelpunkt wäre 4,5x32, ist aber 4x32.
    edit²: @flogy: Meinst du mit obj_ball.x(oder umgekehrt... keine Ahnung) < obj_player.x(oder heißt das doch x.obj_player? wahrscheinlich schon...)?
  • Zu meinem Vorschlag gibt es ein sehr gutes Tutorial. Ich galube es ist sogar eines der Standart-Tutorials auf yoyogames!
    Jedenfalls spielt das keine grosse Rolle, ob es horizontal oder vertikal ist, du musst lediglich die Winkelberechnung um 90° verschieben und statt sprite_width die sprite_height durch 2 teilen! Schau dir mal das Tutorial an. Es wäre sinnlos, wenn ichs dir jetzt detailliert erkläre, wenn du es ja sowieso da nachlesen kannst!


    MfG flogy
  • Es heisst obj_player.x, denn zuerst kommt immer das Objekt und dann die Variable, die durch einen Punkt voneinander getrennt sind.


    Versuch mal folgendes (ungetestet):

    Collision Event des Paddles (Player):

    GML-Quellcode

    1. if (other.y >= y + sprite_height / 2)
    2. {
    3. other.direction = 0 + ((other.y - (y + (sprite_height / 2))) / (sprite_height / 2)) * 90
    4. }
    5. else
    6. {
    7. other.direction = 90 + (((y + (sprite_height / 2)) - other.y) / (sprite_height / 2)) * 90
    8. }


    Die Klammern sind grösstenteils zur Verständlichkeit gesetzt!


    MfG flogy
  • Nope, funktioniert nicht richtig.
    1. Du hast die 90 und die 0 vertauscht(Ball fliegt nach oben, wenn er die untere Hälfte des Paddles berührt*g*) - Korrigiert
    2. Berührt der Ball die obere Hälfte des linken Paddles, bleibt er hängen; beim rechten Paddle ist es die untere Hälfte. Vor dem Korrigieren (Punkt 1) war das andersrum.
    3. Berührt der Ball die Mitte eines Paddles, fliegt er immer gerade nach oben...

    mfg FlashX