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)上查看我的回答,这可能会帮助您看到碰撞来临,而不是在移动碰撞后检查碰撞。 –