見出し画像

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

デフォルト値を参考に、理想のカメラさばきを実装できますね。

この記事が気に入ったらサポートをしてみませんか?