![見出し画像](https://assets.st-note.com/production/uploads/images/135838727/rectangle_large_type_2_7c7ac51dce69fe22093d671033fa2fa3.png?width=1200)
[Siv3D] Camera2Dを設定する際に、注意することがら
概要
以前、Camera2Dの設定を変更する記事を書きました。
.setTargetCenter()のカメラ移動速度を変更したのです。しかし、この方法で実装したコードに不具合が発生してしまいました。
どのような問題?
こんな感じの、ダイナミックなバグが起きていました#gamedev #siv3d #バグ #ゲーム制作 #ゲーム開発 pic.twitter.com/UVa8eOaxRY
— 貝時計 KaiTokei (@NosukeBei) April 1, 2024
Camera2Dの設定を変更し、キーボードとマウスの操作を無効にしていました。しかし、マウスホイールの操作のみ残ってしまい、画面の拡大と縮小ができてしまっていたのです。
Camera2D camera{Vec2(627, 240), 1.0, CameraControl::None_};
原因
原因は、Main()に記述した、次のコードでした。
camera.setParameters(Camera2DParameters{.positionSmoothTime = 1.2}); // カメラのパラメータ設定
positionSmoothTimeというメンバ変数の値を変更することで、setTargetCenterのカメラ移動時間を調整できます。
しかし、この方法ではデフォルトのカメラ設定と.positionSmoothTime = 1.2 の変更となっていますので、ホイールが有効になってしまいます。
解決
Camera2DParametersのヘッダーファイルに、ユーザーからのコントロールを無効にするCamera2DParametersを作成する、NoControl()メソッドがありました。このメソッドを用いて、Camera2Dの設定を作成します。
Camera2DParameters customCamera = Camera2DParameters::NoControl();
customCamera.positionSmoothTime = 1.2;
camera.setParameters(customCamera);
無事、マウスホイールが無効化されました。