【Unity】マウス入力の検出方法まとめ。mousePositionとGetMouseButtonのサンプルスクリプト。
どうも、だらはです。
今回はマウス入力の検出方法についてまとめたいと思います。
具体的には以下を紹介します。
- Input.mousePositionプロパティ
- Input.GetMouseButton()メソッド
- Input.GetMouseButtonDown()メソッド
- Input.GetMouseButtonUp()メソッド
補足ですが、全ての入力はUnityEngine.Inputクラスを通じて取得できます。
マウスカーソルの座標を取得
マウスカーソルの座標はInputクラスのmousePositionプロパティから得られます。
public static Vector3 mousePosition{get;}
mousePositionプロパティは、ゲーム画面の左上隅を原点とするマウスカーソルの座標をピクセル単位で取得します。
型はVector3構造体ですが、Z軸は常に0です。
例として、画面にマウスカーソルの位置を表示するスクリプトを書いてみました。
◆MouseSc.sc
using UnityEngine;
public class MouseSc : MonoBehaviour
{
private void OnGUI()
{
Rect rect1 = new Rect(10, 50, 300, 100);
GUI.Label(rect1, "" + Input.mousePosition);
}
}
出力結果は、本稿の最後に貼りたいと思います。
マウスのクリックを検出(連続)
マウスボタンが押されているかどうかはInputクラスのGetMouseButton()メソッドから取得できます。
[Wrapperlesslcall]
public static bool GetMouseButton(int button);
引数のbuttonには対象のボタンを表す数値を指定します。
0は左クリック、1は右クリック、2は中央ボタンのクリックです。
ボタンが押されている間はずっとtrue、押されていなければfalseを返します。
◆例) 左クリック押下を検出するスクリプト
using UnityEngine;
public class MouseSc : MonoBehaviour
{
bool MouseInL = false;
void Update()
{
MouseInL = Input.GetMouseButton(0);
}
private void OnGUI()
{
Rect rect2 = new Rect(10, 100, 300, 150);
if (MouseInL)
{
GUI.Label(rect2, "左クリックが押されているよ");
}
}
}
マウスのクリックを検出(ON/OFFフラグ)
マウスのクリックが押された/離れたをトリガーとして取得するにはInputクラスのGetMouseButtonDown()メソッドとGetMouseButtonUp()メソッドを用います。
連続入力を避ける場合に使用します。
[WrapperlessIcall]
public static bool GetMouseButtonDown(int button);
[WrapperlessIcall]
public static bool GetMouseButtonUp(int button);
◆例) 右クリックが押された/離された瞬間を検出するスクリプト
using UnityEngine;
public class MouseSc : MonoBehaviour
{
bool MouseInRdw = false;
bool MouseInRup = false;
int Rdw = 0;
int Rup = 0;
void Update()
{
MouseInRdw = Input.GetMouseButtonDown(1);
if (MouseInRdw) { Rdw++; }
MouseInRup = Input.GetMouseButtonUp(1);
if (MouseInRup) { Rup++; }
}
private void OnGUI()
{
Rect rect3 = new Rect(10, 150, 300, 200);
GUI.Label(rect3, "右クリックが" + Rdw + "押されたよ");
Rect rect4 = new Rect(10, 200, 300, 250);
GUI.Label(rect4, "右クリックが" + Rup + "離された");
}
}
◆上記全てのスクリプトをまとめたスクリプト
using UnityEngine;
public class MouseSc : MonoBehaviour
{
bool MouseInL = false;
bool MouseInRdw = false;
bool MouseInRup = false;
int Rdw = 0;
int Rup = 0;
void Update()
{
MouseInL = Input.GetMouseButton(0);
MouseInRdw = Input.GetMouseButtonDown(1);
if (MouseInRdw) { Rdw++; }
MouseInRup = Input.GetMouseButtonUp(1);
if (MouseInRup) { Rup++; }
}
private void OnGUI()
{
Rect rect1 = new Rect(10, 50, 300, 100);
GUI.Label(rect1, "" + Input.mousePosition);
Rect rect2 = new Rect(10, 100, 300, 150);
if (MouseInL)
{
GUI.Label(rect2, "左クリックが押されているよ");
}
Rect rect3 = new Rect(10, 150, 300, 200);
GUI.Label(rect3, "右クリックが" + Rdw + "押されたよ");
Rect rect4 = new Rect(10, 200, 300, 250);
GUI.Label(rect4, "右クリックが" + Rup + "離された");
}
}
◆出力結果
良い感じですね!
ちゃんと出力できました!
最後に
いかがでしたでしょうか。
今回はマウス入力の検出方法についてまとめてきました。
- Input.mousePositionプロパティ
- Input.GetMouseButton()メソッド
- Input.GetMouseButtonDown()メソッド
- Input.GetMouseButtonUp()メソッド
別の項にて、キーボードなどの他の入力方法についてもまとめたいと思います!
ディスカッション
コメント一覧
まだ、コメントがありません