![]() |
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: ) ![]() 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: |
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:
![]() 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. |
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.
|
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? |
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