Problem mit Kollisionserkennung
-
Was ist hier falsch?
(die Funktion soll true zurückgeben wenn BoundingBox1 auf der linken Seite mit BB2 zusammenstößt)bool CollisionOnLeft(RECT bb1, RECT bb2) { int bb1height = bb1.bottom - bb1.top; if( (bb1.top < bb2.bottom) && (bb1.top > (bb2.top - bb1height)) ) if((bb1.left > bb2.left) && (bb1.left < bb2.right)) return true; return false; }
Danke im Voraus ...
-
if( (bb1.top < bb2.bottom) && (bb1.top > (bb2.top - bb1height)) )
hätte man doch auch
if( (bb1.top < bb2.bottom) && (bb2.top < bb1.bottom) )
schreiben können, oder?!?
Und - so halbwegs spontan - ist folgendes
if((bb1.left > bb2.left) && (bb1.left < bb2.right))
doch Quatsch, da Bedingung 2 IMMER erfüllt ist, wenn Bedingung 1 erfüllt ist.
Oder nicht?! Check' das mal...MfG, Sarge
-
Stimmt - das erste if ist eeetwas umständlich...
...aber warum soll Bedingung2 überflüssig sein ??
Wenn
(bb1.left > bb2.left)
zutrifft,
ist es ja möglich, dass das Rechteckt zu weit rechts ist und nicht kollidiert.Könntest du bitte die gesamte richtige Funktion aufschreiben?
mfG
Berni
-
Hab mittlerweile den Fehler gefunden ... lag gar nicht an dieser Funktion sondern in einem anderen Programmteil.