000
28.09.2008, 09:44 Uhr
Arrows
|
Hallo, hab ein Problem mit einer ganz simplen Kollisionsabfrage zwischen 2 Quadraten - Eines mit dem "Radius" (Seitenkante/2) von 70 und einem mit dem Radius von 35.
Das Problem ist, dass die Kollisionsabfrage so stattfindet: .... .... .... |----| |----| .... .... .... .... .... Also eine Kollision wird ausgelöst, wenn das eine Quadrat im anderen ist, und das die ganze y-achse hinauf, die Punkte wären die "Begrenzung" für die Kollision, die Striche sind das Quadrat.
Hier der Code:
C++: |
Collision = false; int Radius1 = 35; // Radius des kleinen Quadrats int Radius2 = 70; // Radius des Großen Quadrats for (it = Quadrats.begin(); it!=Quadrats.end(); it++) // Für jedes Große Quadrat { CenterX1 = TrianglePositionX + Radius1; // Mittelpunkt Berechnen (Triangle = kleines Quadrat) CenterY1 = TrianglePositionX + Radius1; CenterX2 = (*it)->GetPositionX() + Radius2; // Mittelpunkt fürs Große Quadrat berechnen CenterY2 = (*it)->GetPositionY() + Radius2;
OffsetX = abs(CenterX2 - CenterX1); // Absoluten Abstand Berechnen OffsetY = abs(CenterY2 - CenterY1);
if (OffsetX < Radius1 + Radius2 && OffsetY < Radius1 + Radius2) { Collision = true; } } if (Collision == true) { return TRUE; } else if (Collision == false) { return FALSE; } }
|
Was hab ich da falsch gemacht? -- Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt. Dieser Post wurde am 28.09.2008 um 09:46 Uhr von Arrows editiert. |