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.


Anmelden zum Antworten