【Unity】マウスカーソルが重なっていることを判定する

Home
  • マウスカーソルと重なっているゲームオブジェクトを判定する方法が分からない…
  • やり方を忘れてしまった…
  • アイテムをドラッグする仕組みを作るのにマウスカーソルの判定が必要…

このようなことでお困りではありませんか?
本記事ではこれらの解決方法を紹介します。

スポンサーリンク
スポンサーリンク

マウスカーソルが重なっていることを判定する

マウスカーソルが重なっているかを判定するには以下の手順が必要です。

  1. 判定したいオブジェクトにコライダをアタッチする
  2. レイを作成しPhysics.Raycastの返り値で判定する

順番に説明していきます。

判定したいオブジェクトにコライダをアタッチする

マウスカーソルで判定したいオブジェクトにコライダをアタッチします。
コライダはどのようなものでも構いません。

なお、2Dでゲームを作っている場合は、
末尾に「…2D」とついているコライダを選んでください。

レイを作成しPhysics.Raycastの返り値で判定する

Camera.main.ScreenPointToRayを使って
マウスカーソルから画面に向かって伸びるレイ作成し、
Physics.Raycastで判定処理を行います。

        private void FixedUpdate()
        {
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            var hit = Physics.Raycast(ray.origin, ray.direction);

            if (hit.collider)
            {
                //判定処理
            }
        }

コライダが2Dの場合はPhysics2D.Raycastを使用してください。
Physics.Raycastは2Dのコライダを判定することができません。

var hit = Physics2D.Raycast(ray.origin, ray.direction);

なお、Physics.Raycastの返り値で得られるデータの中にはコライダのほかにも、
マウスの座標やtransform等も取得できますので様々な用途で使えます。

まとめ

以上でマウスカーソルが重なっているオブジェクトを判定することができるようになりました。

皆さんのお役に立てれば幸いです。

スポンサーリンク
スポンサーリンク
HomeUnity
むたこなをフォローする
むたこなブログ

コメント

タイトルとURLをコピーしました