Hallo, und zwar komme ich gerade bei einer Formel nicht ganz mit.
Wenn 2 Kreise miteinander Kollidieren und einer von den Kreisen der Spieler ist, soll der Kreis, den der Spieler steuert um den anderen Kreis (z.B. 90Grad) herum fahren, wie so ein Treppeneffekt.
Was ein Vector ist und wie man merkt, ob Kreise miteinander kollidieren habe ich allmählich Verstanden.
Was nun für mein Verständnis noch fehlt, ist die Geschwindigkeit des Abpralls.
Hier ein kleiner Ausschnitt des Codes, um das ganze noch mal zu verdeutlichen.
|
Javascript-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
function blockCircle(c1, c2)
{
//Calculate the vector between the circles center points
var vx = c1.centerX() - c2.centerX();
var vy = c1.centerY() - c2.centerY();
//Find the distance between the circles by calculating
//the vector's magnitude (how long the vector is)
var magnitude = Math.sqrt(vx * vx + vy * vy);
//Add together the circles' combined half-widths
var totalRadii = c1.halfWidth() + c2.halfWidth();
//Figure out if there's a collision
if(magnitude < totalRadii)
{
//Yes, a collision is happening.
//Find the amount of overlap between the circles
//Ab hier komme ich nicht mehr ganz mit
var overlap = totalRadii - magnitude;
//Normalize the vector.
//These numbers tell us the direction of the collision
dx = vx / magnitude;
dy = vy / magnitude;
//Move circle 1 out of the collision by multiplying
//the overlap with the normalized vector and add it to
//circle 1's position
c1.x += overlap * dx;
c1.y += overlap * dy;
}
}
|
Ja, das Beispiel ist in Javascript, aber ich glaube es sollte trotzdem Klar sein, was die einzelnen Abschnitte machen auch wenn man kein Javascript kann und falls es noch Unklarheiten im Code gibt, fragt nach.
Also was ist jetzt die Frage?
Kann mir das bitte jemand auf eine einfache und verständliche Art erklären (, wenn es den überhaupt möglich ist, den Mathe liegt ja nicht jedem)?
Aus meiner Sicht müsste der Kreis beim Kollidieren mir KreisNr2 immer genau einen Konstanten Wert wegbewegen
Vielleicht aber ist das Prinzip auch einfach so simpel, dass ich es übersehe.
Ich bedanke mich schon mal für die kommende Hilfe