2
我剛剛加入了SFML 2.1,我想做一個Pong遊戲。但是我遇到了一個問題,我無法做出碰撞檢測。當它檢測到碰撞時,球即使移動到任何位置,也會移動到另一個位置。下面有你需要的代碼(對不起,我的英文不好它不是我的母語):C++ SFML 2.1碰撞
bool Game::collision()
{
if (mPlayer.getGlobalBounds().intersects(mBall.getGlobalBounds()))
{
mBall.setFillColor(sf::Color::Green);
score++;
std::cout << score << std::endl;
return true;
}
else
return false;
}
void Game::update(sf::Time deltaTime)
{
sf::Vector2f movement(0.f, 0.f);
if (mIsMovingLeft)
movement.x -= PlayerSpeed;
if (mIsMovingRight)
movement.x += PlayerSpeed;
sf::Vector2f gravity(0.f, 4.f);
mPlayer.move(movement * deltaTime.asSeconds());
mBall.move(gravity);
if (collision() == true) {
mBall.setFillColor(sf::Color::Green);
}
}
void Game::render()
{
mWindow.clear(sf::Color::White);
mWindow.setFramerateLimit(60);
mWindow.draw(mPlayer);
mWindow.draw(mBall);
mWindow.display();
}
我莫名其妙地無法把握這一點。 ** 1)**'mPlayer'是否代表球員槳?如果是,爲什麼你在交叉點上添加分數?這是不是Pong的一些奇怪的方言? :D ** 2)**在十字路口,你應該「糾正」球在槳的旁邊。球不應該通過槳,對不對?你也應該改變運動的球向量。 *改變它在槳碰撞* ** 3)**你設置球顏色兩次,首先在碰撞()',然後在'更新()'** 4)**乒乓球和重力?這是如何運作的? ** 5)**你不必setFrameLimit()每一幀。在你的C-tor中做。 – sjaustirni
在[Tilemap Collision SFML C++](http://stackoverflow.com/a/21594634/1218980)上查看我的回答,這可能會幫助您看到碰撞來臨,而不是在移動碰撞後檢查碰撞。 –