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));