我目前正在将SFML与c ++一起使用,并且在将我的精灵保留在页面上时遇到一个小问题。下面是代码,如果有人有任何想法可以帮助解决我的问题,那就太好了!

     if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && shape1.getPosition().y < screenLength)
        {
                if (shape1.getGlobalBounds().intersects( line1.getGlobalBounds()) || shape1.getGlobalBounds().intersects(line.getGlobalBounds()) || shape1.getGlobalBounds().intersects(line2.getGlobalBounds()))
                {
                    shape1.move(0.0f, -.2f);
                    std::cout << "Collision";
                }


当我一直按下向下按钮时,它使我离开生成的窗口的底部,而不是像根据if语句那样跳过它。

最佳答案

我发现问题并解决了...所以当我拿到

 shape1.globalBounds().x


它返回精灵顶部的X。所以我必须把它放在这行,以使其正常工作:

float test = shape1.getGlobalBounds().top +  shape1.getGlobalBounds().height;


现在它停止在screenLength上,并且如果调整了屏幕大小等,它将继续工作。

10-07 13:08