Unityでマウス入力を扱う
Unity逆引き:マウス入力を扱う
- カーソル座標の取得
- クリック判定
カーソル座標の取得
マウスのカーソル座標は、Input.mousePositionで取得できます。
public static Vector3 mousePosition;
返り値は、画面の右上を{x: Screen.width, y: Screen.height}とする左手座標系の数値(Vector3型)です。2Dアプリで一般的なクライアント座標系ではありません。
また、これはスクリーン座標のため、Unity3Dのワールドで扱う場合は座標変換が必要になります。座標系・座標変換については、別の記事で解説します。
クリック判定
マウスボタンのクリック判定には3種類あります。
- ボタンが押されているか否か
- いまボタンが押されたか否か
- いまボタンが離されたか否か
ボタンが押されているかを確認する
Input.GetMouseButton()を使うと、ボタンが押されているかどうかをbool型の値で取得できます。 たとえば「マウスボタンを押している間、スライディングする」というような機能で使えます。
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { if (Input.GetMouseButton(0)) { print("左ボタンが押されている"); } if (Input.GetMouseButton(1)) { print("右ボタンが押されている"); } if (Input.GetMouseButton(2)) { print("中ボタンが押されている"); } } }
引数には、ボタンの種類をint型で渡します。左ボタンが0、右ボタンが1、中ボタンが2です。
いまボタンが押されたかを確認する
Input.GetMouseButtonDown()を使うと、いまボタンが押されたかどうかをbool型の値で取得できます。 たとえば「マウスボタンを押した時、ジャンプする」というような機能で使えます。
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { print("いま左ボタンが押された"); } if (Input.GetMouseButtonDown(1)) { print("いま右ボタンが押された"); } if (Input.GetMouseButtonDown(2)) { print("いま中ボタンが押された"); } } }
いまボタンが離されたかを確認する
Input.GetMouseButtonUp()を使うと、いまボタンが離されたかどうかをbool型の値で取得できます。 たとえば「マウスボタンを離した時、矢を放つ」というような機能で使えます。
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { if (Input.GetMouseButtonUp(0)) { print("いま左ボタンが離された"); } if (Input.GetMouseButtonUp(1)) { print("いま右ボタンが離された"); } if (Input.GetMouseButtonUp(2)) { print("いま中ボタンが離された"); } } }