本日は Unity の小ネタ枠です。
Unityでマウスのスクロール量を取得する方法についてです。
Unityでマウスのスクロール量を取得する
Unityでマウスのスクロール量を取得するには Input.mouseScrollDelta を参照します。
docs.unity3d.com
Input.mouseScrollDelta は読み取り専用です。そのフレームでのスクロール量が Vector2 の形式で取得できます。
変化量は Vector2.y に格納されており、Vector2.x は利用しません。
スクロールが回転していないときは 0、回転の方向に応じて正か負の値が返ります。
トラックパッド操作ではパッド上で2本の指を合わせて上下に動かすことでスクロールをシミュレートできます。
スクロール(中央)ボタンの押下を検出する
因みにスクロール(中央)ボタンのクリック状態は Input.GetMouseButton の引数に 2 を渡すことで取得可能です。
docs.unity3d.com
サンプルシーン
スクロールの変化量を加算して表示するサンプルシーンを作成しました。
毎フレーム参照したスクロール量を加算してテキストに表示します。スクロールボタン押下時にスクロール量をリセットします。
・MouseScrollTest.cs
using System.Globalization; using TMPro; using UnityEngine; public class MouseScrollTest : MonoBehaviour { /// <summary> /// スクロール量を表示するTextコンポーネントの参照 /// </summary> [SerializeField] private TMP_Text _TMPText; /// <summary> /// スクロール量 /// </summary> private float _scrollAmount; void Update() { // スクロール量を加算する _scrollAmount += Input.mouseScrollDelta.y; SetScrollAmountText(_scrollAmount); // マウスのスクロール(中央)ボタンクリックが押下されたらスクロール量をリセットする if (Input.GetMouseButton(2)) _scrollAmount = 0f; // スクロール量の表示を更新する SetScrollAmountText(_scrollAmount); } private void SetScrollAmountText(float scrollAmount) { _TMPText.text = scrollAmount.ToString(CultureInfo.InvariantCulture); } }