Kollisionen im 2D Raum sinnvoll berechnen

Neue Frage »

Garrarufa2 Auf diesen Beitrag antworten »
Kollisionen im 2D Raum sinnvoll berechnen
Meine Frage:
Ich programmiere ein 2D Spiel, bei dem es eine Map mit quadratischen Blöcken gibt, die nicht durchschossen werden können. Die Kugeln fliegen relativ schnell. Es werden 60 Frames pro Sekunde berechnet und mit jedem Frame wird erneut geprüft, ob eine Kugel einen der Blöcke getroffen hat. Jetzt kann es passieren, dass eine Kugel sehr knapp über eine Ecke eines Blocks fliegt. Dann wird in einem Frame berechnet, dass die Kugel sich noch vor der Ecke befindet, im nächsten Frame ist sie dann aber schon so weit, dass sie hinter der Ecke ist. Dann fliegt die Kugel einfach weiter, obwohl sie eigentlich den Block getroffen hat. Gibt es eine einfache Möglichkeit, mit möglichst geringem Rechenaufwand, zu berechnen, ob die Kugel die Ecke noch gestriffen hat? Gegeben sind die Eckkoordinaten der Blöcke, um welche Ecke es sich handelt (z.B. rechts unten), die Koordinaten des Mittelpunkts der Kugel zum aktuellen Zeitpunkt und zum Zeitpunkt der letzten Frameberechnung und der Radius der Kugel (die Kugel wird als Kreis aufgefasst).

Meine Ideen:
Eine Idee wäre zu prüfen, ob der Mittelpunkt der Verbindungsstrecke zwischen der Kugel zum aktuellen Zeitpunkt und der Kugel zum Zeitpunkt der letzten Frameberechnung den Block berührt (mit Berücksichtigung des Radius). Aber dann habe ich auch nur zusätzliche Genauigkeit erlangt. 100% sicher ist das Ergebnis nicht...
Steffen Bühler Auf diesen Beitrag antworten »
RE: Kollisionen im 2D Raum sinnvoll berechnen
Willkommen im Matheboard!

Die beiden Kugelmittelpunkte der zwei Frames definieren eine Gerade. Der sogenannte Lotabstand zum Eckpunkt des Blocks muss nun größer sein als der Kugelradius.

Wie man den Lotabstand berechnet, steht zum Beispiel in unserem Workshop:

[Artikel] Lotabstand Punkt - Gerade

Falls Du dazu noch weitere Fragen hast, nur zu.

Viele Grüße
Steffen
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »