Dlaczego instrukcja warunkowa nie działa tak jak powinna?
Próbuję zrobić grę - prostą platformówkę, napotkałem jednak problem z niepoprawnie działającą(?) instrukcją warunkową, podczas sprawdzania kolizji z wykorzystanie FloatRect. Całkowicie nie wiem o co chodzi, ale według moich skromnych obliczeń if wykonuje się kiedy w teorii nie są spełnione wszystkie warunki, co dziwne nie dzieje się tak za każdym razem, ale jakby losowo...
Kawałek kodu:
bool Physics::intersects(FloatRect& rect1, FloatRect& rect2)
{
std::cout << "Intersects:" << std::endl;
std::cout << "___________________________________" << std::endl;
if( (rect1.left < (rect2.left + rect2.width)) &&
((rect1.left + rect1.width) > rect2.left) &&
(rect1.top < (rect2.top + rect2.height)) &&
((rect1.top + rect1.height) > rect2.top)
)
{
std::cout << "inter true:" << std::endl;
std::cout << "Player: " << rect1.left << " " << rect1.top << " " << rect1.width << " " << rect1.height << std::endl;
std::cout << "Blok: " << rect2.left << " " << rect2.top << " " << rect2.width << " " << rect2.height << std::endl;
std::cout << "-----------------------------------" << std::endl;
return true;
}
else
{
return false;
}
}
Przykładowe wyjścia:
Intersects:
___________________________________
inter true:
Player: 490.018 500 100 100
Blok: 550 400 100 100
-----------------------------------
lub
Intersects:
___________________________________
inter true:
Player: 480.014 500 100 100
Blok: 550 400 100 100
-----------------------------------
Wydaje się niemożliwe aby wykonała się instrukcja, ale być może popełniłem jakiś głupi błąd logiczny.
UPDATE
Zobrazowanie problemu:
