Ballverhalten in einem Ping Pong Spiel?
-
Hallo Ihr!
Ich versuche mich gerade an einem einfachen Ping Pong Spiel ala Atari, also 2 Schläger und ein Ball. Gibts irgendwo Informationen über das Verhalten des Balles in so einem Spiel, Abprallwinkel, vielleicht noch mit Berücksichtigung der Ballrotation, usw?
Wäre für jede Hilfe dankbar!
-
Allgemein musst Du bei einer Kollision mit der Wand oder dem Schläger entweder nur die x- oder die y-Bewegungskomponente des Balls umkehren (also das Vorzeichen ändern). Dann kannst Du noch z.B. 1/5 der x-Bewegungskomponente des Schlägers abziehen (bei Kollision mit Schläger), damit der Ball "angedreht" wird. Also wenn der Schläger nach rechts läuft, während er den Ball trifft, wird dieser stärker nach links abgelenkt als normalerweise.
-
Das ändert die Geschwindigkeit und die Änderung des Winkels ist abhängig von der vorigen Geschwindigkeit und Winkel.
Ich würde erstmal Einfalls= Ausfallswinkel implementieren. Den Rest müsstest du mal genau definieren. Ich glaub im DSB wurde mal die genaue Formel für Rotation hergeleitet. Ist aber recht kompliziert, daher überleg erstmal was genau du willst.
-
Danke für eure Anregungen
Was ich will, ist schnell erklärt, und zwar physikalische Bewegungsabläufe anhand von Vektorenrechnungen zu verstehen und implementieren. Ich schreib das Spiel eigentlich nur zu Test- und Lernzwecken, von daher möchte ich natürlich soviele Möglichkeiten einbauen, wie bei so einem Spiel möglich ist. Auch wenn es vielleicht unnötig oder kompliziert ist, kann man doch bestimmt was draus lernen.
Übrigens habe ich 2 Schläger, einen links und den anderen rechts
Oben und unten wird der Bildschirm von einem Rand begrenzt. Im Moment ist es ein 2 Player Spiel, aber mich würde ausserdem oben noch interessieren, wie man dem Computer die Kontrolle über den 2. Schläger gibt, also wie eine einfache Ping-Pong-KI aussehen könnte.
-
Wenn es da wirklich nur Wände (und Schläger) gibt, die parallel zur x- oder y-Achse verlaufen, dann kannst Du es so machen wie ich oben geschrieben habe (Wand oben/unten: Vorzeichen der y-Bewegungskomponente ändern; Schläger: Vorzeichen der x-Bewegungskomponente ändern).
Eine ganz simple KI würde einfach versuchen, ständig ihre y-Position der des Balles anzugleichen. Eine etwas intelligentere würde die zukünftige Position des Balles "voraussagen" und sich direkt dorthin begeben.
Außerdem könnte sie gucken, welchen Punkt der Spieler am schlechtesten erreichen kann und dann dort hin "zielen".
-
Das klappt ja schonmal ganz gut. Ich habe jetzt 4 Zonen auf jedem Schläger, wo der Ball mit unterschiedlichem Winkel reflektiert wird. in der oberen Hälfte einmal mit +5 und etwas höher +10 Einheiten pro Sekunde, und in der unteren Hälfte entsprechend -5 und -10 Einheiten, jeweils auf der y-Komponente. X bleibt dabei erstmal gleich. Vielleicht macht es Sinn, noch eine Art Zufallszahl zu addieren, damit die Winkel nicht immer die gleichen sind?
Das mit der Bewegungskomponente des Schlägers, wie Thomas sagt, bekomme ich sicher auch noch hin, ich hätte jetzt aber gedacht, dass der Ball stärker nach rechts abgelenkt wird, bzw etwas seiner Bewegungsenergie nach links verliert (um bei Rikers Beispiel zu bleiben), wenn er auf einen sich nach rechts bewegenen Schläger trifft...
@TGGC:
Was ist das DSB und wo finde ich es? Mich würde es schon interessiern, mal einen Blick auf die Rotationsformeln zu werfen.Danke nochmal
-
Ich glaube, wir hatten sowas ähnliches schon mal. Damals war's zwar ein Breakout-Clon, is aber afik dasselbe von der Ballphysik:
http://www.c-plusplus.net/forum/viewtopic.php?t=46264&highlight=Ich hab eure posts aber nur überflogen, und weiss net so genau, obs passt.
Gruß
E-the-Real
-
Naja, ein Pang-Spiel ist ja nicht ganz das, was ich meine. So kompliziert müssen die Ballbewegungen ja gar nicht sein in einem simplen Atari-PingPong...
-
OnkelPaul schrieb:
@TGGC:
Was ist das DSB und wo finde ich es? Mich würde es schon interessiern, mal einen Blick auf die Rotationsformeln zu werfen.