Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Spiel: Breakout Kollisionen (https://www.delphipraxis.net/111082-problem-mit-spiel-breakout-kollisionen.html)

SemmelRoth 29. Mär 2008 02:07


Problem mit Spiel: Breakout Kollisionen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leute ich bin dabei mit der 2D Engine von Andorra das Spiel BreakOut zu machen

Für die die das Spiel nicht kennen, unten ist ein Schläger und mit dem wehrt man die Kugel ab und versucht oben alle Steine kaputt zu machen.

also unten werd ich mal die ganzen Dateien anhängen und da ist auch die Exe Datei und der Code drinnen (Spielt es unter OpenGL)

mein einziges Problem ist es jetzt das ich nicht weiß wie ich dem Spiel sagen soll das wenn die Kugel einen Stein an der Seite trifft nicht die Y Richtung geändert wird sondern die X Richtung... (Hier ein kleines Bild was hoffentlich alles verdeutlicht: )

http://csrobin.cs.ohost.de/b2/brick1.jpg

also zur Zeit passiert egal wo die Kugel den Stein berührt das die Y Richtung ändert, wie mach ich das das er an der kurzen seite des Steins die nur die X Richtung wechselt?

hier noch meine Datei:

Namenloser 29. Mär 2008 03:54

Re: Problem mit Spiel: Breakout Kollisionen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Denk dir an deiner Kugel einfach mehrere "Detektoren", an denen du dann die Kollision prüfst:
http://img3.imagebanana.com/img/k36x...fsfsfdsfds.png
Hier prüfst du an den detektoren 1,2,3 und 4. Bei 1 und 3 änderst du die X-Richtung, bei 2 und 4 die Y-Richtung. So würde ich es jedenfalls machen.

Medium 29. Mär 2008 04:49

Re: Problem mit Spiel: Breakout Kollisionen
 
Ich würde die Detektion eher an den Bricks machen, weil es sein kann, dass du keinen derjenigen an der Kugel triffst.

SemmelRoth 29. Mär 2008 13:07

Re: Problem mit Spiel: Breakout Kollisionen
 
ja nur wie soll ich abfragen an welcher der Seiten (Detektoren) die Kugel etwas trifft?
hast mal die Kollisions Funktion angeguckt?

Medium 29. Mär 2008 13:36

Re: Problem mit Spiel: Breakout Kollisionen
 
Ohne zu gucken: Du stellts einfach "irgendwie" die Kollision fest, und kannst dann folgendes einfach machen:
- Ist die am weitesten rechte Y-Koordinate im Brick links der am weitesten linken Y-Koordinate der Kugel, ist die Kugel von rechts angestoßen
- Ist die am weitesten linke Y-Koordinate im Brick rechts der am weitesten rechten Y-Koordinate der Kugel, ist die Kugel von links angestoßen
- ...

Setzt nur voraus, dass deine Kollisionserkennung zuverlässig ist, und evtl. musst du mit dem jeweiligen kürzesten Abstand der "Kugelseiten" zu den Brick-Strecken arbeiten, wenn du zulässt, dass die Kugel "in den Brick" fliegen kann.

Die generell sauberste Lösung wäre es, mit Vektoren zu arbeiten, und die Kollisionserkennung durch Schnittpunktberechnung des Richtungsvektors der Kugel mit den Brick-Seiten zu machen. Dabei kommt automatisch mit heraus, wo genau die Kugel nun auftrifft, und du kannst verhindern, dass sie sich durchdringen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz