我用C++和SFML 2.1爲學校創建了一個pong克隆,當球以尖銳的角度擊中左槳時,我遇到了一個小問題。球從某個角度穿過槳
右槳在所有角度都能正常工作,並且據我記憶,他們使用相同的代碼。
這是我使用的碰撞代碼:
for (auto& it : collisionPaddles)
{
if (this->ballShape.getGlobalBounds().intersects(it->getGlobalPaddleBounds()))
{
float deltaDistance = (this->y + this->radius) - (it->y + it->height/2);
bool fromLeft = true;
if ((ballAngle < (3*myMath::MY_PI/2) && ballAngle > myMath::MY_PI/2))
{
fromLeft = false;
}
else
{
fromLeft = true;
}
ballAngle = static_cast<float>(deltaDistance * (myMath::MY_PI/180));
if (fromLeft)
{
ballAngle = static_cast<float>(myMath::MY_PI - ballAngle);
}
moveBall(2);
}
}
你能對你的問題闡述的方面的限制,你檢測到衝突用槳?你尖銳的角度是什麼意思?你的意思是球的方向幾乎與槳平行嗎? – OopsUser 2014-09-23 08:57:37
檢測到碰撞。 我沒有任何確切的數字,但如果是> + - 〜40度,它通過 – 2014-09-23 09:02:04
我已經做了一個真棒圖片說明(綠角度做工精細,紅色穿過): HTTP:// oi61。 tinypic.com/15zhw78.jpg – 2014-09-23 09:08:39