本日はUnityの小ネタ枠です。
Unityでマウスポインタが画面上にあるか判定する方法です。
Camera.pixelRect
Camera.pixelRectはゲーム画面上のピクセル座標でどこにカメラが描画されているかの2次元範囲を返します。
docs.unity3d.com
Rect.Contains
渡されたポイントが矩形内にあればTrueを返します。
docs.unity3d.com
サンプルスクリプト
マウスポインタがメインカメラが描画されている範囲上にあるときログ出力を行う以下のサンプルスクリプトを作成しました。
・CameraRectTest.cs
using UnityEngine; public class CameraRectTest : MonoBehaviour { void Update() { // マウスがカメラのビューポート範囲内にあるかをチェックしてログ出力する if (IsMouseOverCamera()) { Debug.Log("Mouse is over camera viewport"); } else { Debug.Log("Mouse is outside camera viewport"); } } /// <summary> /// マウスがカメラのビューポート範囲内にあるかを判定 /// </summary> /// <returns>カメラ範囲内にある場合true</returns> private bool IsMouseOverCamera() { Vector3 mouseScreenPos = Input.mousePosition; Rect cameraRect = Camera.main.pixelRect; return cameraRect.Contains(mouseScreenPos); } }

シーンを再生してゲーム画面内外でマウスポインタを移動させると、ログ出力が変化して判定結果を確認できます。
