見出し画像

[Siv3D] Camera2Dを設定する際に、注意することがら


概要

以前、Camera2Dの設定を変更する記事を書きました。

.setTargetCenter()のカメラ移動速度を変更したのです。しかし、この方法で実装したコードに不具合が発生してしまいました。

どのような問題?

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

無事、マウスホイールが無効化されました。

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