Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Problem mit Kollisionsabfrage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2008, 10:45 Uhr
~Arr0ws
Gast


Ich Idiot, hier liegt der Fehler:

CenterY1 = TrianglePositionX + Radius1;

gehört:

CenterY1 = TrianglePositionY + Radius1;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.09.2008, 10:48 Uhr
Tron



Moin,

nur kurz überflogen,hast Dich verschrieben:

Code:
CenterY1 = TrianglePositionX + Radius1;


warst schneller!

Dieser Post wurde am 28.09.2008 um 22:36 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2008, 13:12 Uhr
~...-...
Gast


:Rakete:
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: