TASOGARE GAMES BLOG

タソガレゲイムス :: 神奈川県でゲームを開発する人々のブログです。

Unityでマウス入力を扱う

Unity逆引き:マウス入力を扱う

  1. カーソル座標の取得
  2. クリック判定

カーソル座標の取得

マウスのカーソル座標は、Input.mousePositionで取得できます。

public static Vector3 mousePosition;

返り値は、画面の右上を{x: Screen.width, y: Screen.height}とする左手座標系の数値(Vector3型)です。2Dアプリで一般的なクライアント座標系ではありません。

f:id:tasogare_games:20150607204636p:plain

また、これはスクリーン座標のため、Unity3Dのワールドで扱う場合は座標変換が必要になります。座標系・座標変換については、別の記事で解説します。

クリック判定

マウスボタンのクリック判定には3種類あります。

  1. ボタンが押されているか否か
  2. いまボタンが押されたか否か
  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("いま中ボタンが離された");
        }
    }
}