相当于SFML 2.0中的SetFromRect()

SFML 2.0 equivalent of SetFromRect()?

本文关键字:SetFromRect 中的 SFML 相当于      更新时间:2023-10-16

我需要为SFML 2.0找到等效的SetFromRect()。我在一个相机类中使用它,在那里我更新了矩形的位置,精灵可以自由移动。一旦到达屏幕中间,它将开始滚动镜头,用新的坐标重新更新矩形。

void Camera::Update(int x, int y)
{
    cameraX = -(ScreenWidth / 2) + x;
    cameraY = -(ScreenHeight / 2) + y;
    std::cout << "cameraX: " << cameraX << std::endl;
    std::cout << "cameraY: " << cameraY << std::endl;
    if(cameraX < 0)
        cameraX = 0;
    if(cameraY < 0)
        cameraY = 0;
    CameraPosition.setViewport(sf::FloatRect(cameraX, cameraY, cameraX + ScreenWidth, cameraY + ScreenHeight));
    std::cout << "cameraX + ScreenWidth: " << cameraX + ScreenWidth << std::endl;
    std::cout << "cameraY + ScreenWidth: " << cameraY + ScreenWidth << std::endl;
}

除了:

CameraPosition.setViewport(sf::FloatRect(cameraX, cameraY, cameraX + ScreenWidth, cameraY + ScreenHeight));

它得到了所有正确的数字,但我认为它是错误的函数。

我确实尝试了reset(),但它也不起作用。

编辑:

正确的代码是:

CameraPosition.reset(sf::FloatRect(cameraX, cameraY, ScreenWidth, ScreenHeight));
CameraPosition.setViewport(sf::FloatRect(0,0,1,1));

SFML 2.0矩形类型从(左,上,右,下)更改为(左,上,宽,高)。我也经常犯这样的错误。

要移动相机,你需要做的就是移动sf::View。在您的代码中,这就像调用CameraPosition.setCenter(x, y);一样简单。