Corner Collision Bug C ++ sfml - PullRequest
       22

Corner Collision Bug C ++ sfml

0 голосов
/ 27 февраля 2020

Я использую 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% случаев, однако, время от времени игрок застревает, я полагаю, потому что оба угла сталкиваются одновременно и сбивают с толку метод. Что я должен добавить, чтобы это исправить?

...