Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

1

17.07.2012, 14:27

Breakout Clone - Berechnung der Flugbahn des Balls

Hallo zusammen,

da ich vor ein paar Monaten einen kleinen Pong Clone gebaut hatte, wollte ich mich nun mal an einen Breakout Clone versuchen.
Ein Jump & Run erscheint mir noch zu schwer und zu komplex. (Wobei ich an dieser Stelle echt zugeben muss, dass ich sehr überrascht bin, überhaupt ein Pong hinbekommen zu haben ^^)

So nun zu meinem Problem worüber ich mir gerade Gedanken mache. Es geht um die Flugbahn der Kugel, die ich nicht wie bei Pong einfach in irgend einer Richtung abprallen lassen möchte. Es soll schon etwas realistischer werden.

Hat jemand einen Hint für mich, wo ich da ansetzen kann? :hmm:

Wie schon bei Pong setze ich auf C++ und DirectX11, was hier aber nicht von Bedeutung sein sollte, da es sich hier ja um eine Mathe Problem handelt.

Gruß

fb

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

2

17.07.2012, 14:34

Was genau stellst du dir unter " realistischer" vor?
Bei einem Breakout verliert die Kugel normalerweise nie an Geschwindigkeit darum ist ein normals abprallen gar nicht eine blöde Idee. Man muss einzig verhindern, dass der Ball nicht ewigs in der horizontalen hin und her fliegt. Dafür gibt es verschiedene Lösungen, wie z.B eine leichte 'Gravitationskraft' oder eine Einschränkung des maximalen abprall Winkel in der Horizontalen.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

Mastermind

unregistriert

3

17.07.2012, 16:10

Der Trick ist eigentlich Effet zu simulieren.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

17.07.2012, 16:19

Ich glaube, er hat erst einmal das Problem, dass er die einfachte Variante "Einfallswinkel = Ausfallswinkel" nicht berechnen kann.

Im einfachen Fall, wo es nur achsenparallele oder achsensenkrechte Flächen gibt, kannst du es wie folgt machen:
- Trifft der Ball eine vertikale Fläche, so wechsle das Vorzeichen der x-Komponente seines Geschwindigkeitvektors
- Trifft der Ball eine horizontale Fläche, ... das gleiche mit y

Der allgemeine Fall ist etwas schwerer ...
Außerdem wird oben nicht der Fall berücksichtigt, dass der Ball genau eine Ecke trifft.

Mastermind

unregistriert

5

17.07.2012, 16:28

Ich glaube wenn er Pong bereits hinbekommen hat und nun etwas "realistischeres" will, sollte das schon funktionieren :)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

17.07.2012, 16:28

Natürlich wird der Fall für die Ecke berücksichtigt. In dem Fall würden die Vorzeichen von X und von Y getauscht und der Ball würde wieder zurück fliegen. Ich vermute mal es geht um die Kollision mit dem Spielslider oder wie man das Teil auch immer nennen möchte. Da ist es ja oft so, dass der Ball an den Rändern anders abprallt bzw die Geschwindigkeit des Sliders mit einberechnet wird. Der einfachste Fall wäre eine Unterteilung. In der Mitte ist Einfallswinkel gleich Ausfallswinkel. An den Rändern rechnest du eine Abweichung mit ein. Der andere Fall ist etwas komplexer. Dabei musst du die Geschwindigkeit vom Slider bestimmen können und daraus dann sinnvoll den Winkel des Balls anpassen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

17.07.2012, 16:32

Ich glaube wenn er Pong bereits hinbekommen hat und nun etwas "realistischeres" will, sollte das schon funktionieren :)

Ja, dachte ich erst auch, aber dann las ich (Hervorhebung durch mich):

Es geht um die Flugbahn der Kugel, die ich nicht wie bei Pong einfach in irgend einer Richtung abprallen lassen möchte.

Klingt so, als ob die Richtung einfach zufällig gewählt würde.

@Schorsch:
Ich denke nicht, weil es auch noch darauf ankommt, an welcher Stelle des Balls die Kollision mit der Ecke stattfindet.
Die Stelle bestimmt den Normalenvektor, und der sollte auf die resultierende Flugbahn einen Einfluss haben.

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

8

17.07.2012, 17:55


Klingt so, als ob die Richtung einfach zufällig gewählt würde.


Klingt nicht nur so, meinte ich auch so. :-) Das war auch ein Punkt, der mir bei dem Spiel auch nicht besonders gefallen hat. Aber nun will ich es ja im nächsten Schritt besser machen.

Ich werde einfach mal anfangen, mal sehn was rauskommt.

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

9

17.07.2012, 18:03

Ich möchte nicht nur einen diagonalen Verlauf der Kugel haben. Die Kugel soll über das Spielfeld rollen, also wenn sie in einem 20° Winkel aufprallt, dann auch entsprechend wieder abprallen. Einfach die Vorzeichen ändern käme meinem Pong Clone gleich.

Was genau stellst du dir unter " realistischer" vor?
Bei einem Breakout verliert die Kugel normalerweise nie an Geschwindigkeit darum ist ein normals abprallen gar nicht eine blöde Idee. Man muss einzig verhindern, dass der Ball nicht ewigs in der horizontalen hin und her fliegt. Dafür gibt es verschiedene Lösungen, wie z.B eine leichte 'Gravitationskraft' oder eine Einschränkung des maximalen abprall Winkel in der Horizontalen.

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

10

17.07.2012, 18:08

Ich glaube ich habe da etwas gefunden auf das ich aufsetzen kann

Dieses Tutorial zeigt die Implementierung einer Kugel auf dem Billardtisch, ich denke, dass ist genau das was ich brauche.

http://wiki.delphigl.com/index.php/Tutorial_Kollision1

Werbeanzeige