[Siv3D] Camera2DのCamera2DParametersを使い、setTargetCenter()のカメラ移動速度を調整する
// マウスの場所に移動する
if (MouseR.down())
{
Vec2 deltaPos = Cursor::Pos() - Scene::Size() / 2 / camera.getScale();
Vec2 cameraPos = camera.getCenter();
Vec2 nextPos = Vec2{cameraPos.x + deltaPos.x, cameraPos.y};
camera.setTargetCenter(nextPos);
}
こちらのコードを記述しますと、カーソルのx座標に、Camera2Dの中心が移動します。しかし、デフォルトの速度では、移動が速すぎると感じることがあります。
camera.setParameters(Camera2DParameters{.positionSmoothTime = 1.0});
Camera2DオブジェクトのsetParametersメソッドの引数に、Camera2DParametersを与えます。本件の場合は、positionSmoothTimeの値を変更し、与えます。
注意
この方法では、設定が反映されない場合があります。次の記事を必ず併読してください。
こちらのGitHubに、その他のCamera2DParametersの値が載っています。
double minScale = (1.0 / 128.0);
double maxScale = 128.0;
double scaleSmoothTime = 0.2;
double positionSmoothTime = 0.2;
// wheel
double wheelScaleFactor = 1.125;
// mouse
double grabSpeedFactor = 4.0;
// controls
double controlScaleFactor = 2.0;
double controlSpeedFactor = 400.0;
デフォルト値を参考に、理想のカメラさばきを実装できますね。