"Uebersprungene" Kollision
-
Hallo,
ich hab da ein Problem: Ein Ball bewegt sich mit einer Geschwindigkeit von 20Pixeln/frame auf eine (stehende) zb 2 Pixel breite Wand zu. In jedem frame wird abgefragt, ob die beiden kollidieren. Jetzt kann es ja passieren, das sich der Ball z.B. 2Pixel vor der Wand befindet, d.h. in diesem frame keine kollision zu stande kommt. Im naechsten frame befindet sich der Ball aber schon hinter der Mauer, d.h. die kollision wurde "uebersprungen".
Wie kann ich jetzt elegant testen, ob und _WO_ sich nun wirklich eine kollision ereignet hat oder nicht? Ich hab da schon eine Idee, mit der ich aber nicht zufrieden bin: Ich teste, ob sich zwischen den Pixeln der Positionen der Kugel (vorh/nachher) die Mauer befindet. Wenn ja -> kollision an "Position der Mauer".
Mit der Methode bin ich aber nicht sehr zufrieden, weil sie nur gilt, wenn die Mauer sich nicht bewegt. Angenommen die Mauer bewegt auch auf den Ball zu, funktioniert das so nicht mehr...
Danke schonmal...
ciao
-
Crax schrieb:
Mit der Methode bin ich aber nicht sehr zufrieden, weil sie nur gilt, wenn die Mauer sich nicht bewegt. Angenommen die Mauer bewegt auch auf den Ball zu, funktioniert das so nicht mehr...
Doch: Du tust in dem Fall einfach so, als würde die Mauer sich nicht bewegen und fügst die Bewegung der Mauer zu der des Balls hinzu. Ob jetzt der Ball mit 50 Pixeln pro Sekunde nach rechts fliegt und die Mauer mit 30 Pixeln pro Sekunde nach links, oder ob der Ball mit 80 Pixeln pro Sekunde nach rechts gegen die stehende Mauer fliegt, ist doch egal.
Du musst nur die Geschwindigkeiten subtrahieren.
-
aahhaa...
Danke!
-
Exakt. Schließlich sind bei der Kollision zweier dynamischer Objekte nur die **Relativ-**Bewegungen (die Bewegung im Verhältnis zueinander) entscheidend.