Я использую SFML для создания игры на платформе и использую этот код для вычисления, когда спрайты двух объектов (я их назвал collidables) перекрываются:
bool checkRightTest(float px, float py, float cx, float cy, float pHeight, float pWidth, float cHeight, float cWidth) { //above, below, right, left
if (cy > (py + pHeight)) {
return true;
}
else if (py > (cy + cHeight)) {
return true;
}
else if (px > (cx + cWidth)) {
return true;
}
else if (cx > (px + pWidth) + 0.6) {
return true;
}
else {
return false;
}
}
Метод принимает в координатах и длине / ширине обеих встречных. У меня есть четыре метода для каждого направления, единственное различие между ними заключается в том, что в их конкретном направлении c добавляется число, превышающее скорость игрока, чтобы игрок не застрял. Код работает отлично в 99% случаев, однако, время от времени игрок застревает, я полагаю, потому что оба угла сталкиваются одновременно и сбивают с толку метод. Что я должен добавить, чтобы это исправить?