Unity2Dでマウスの下にオブジェクトがあるか調べる方法

Unity2Dでマウスの下にオブジェクトがあるか調べたい時はPhysics2D.Raycastを使って調べることができます。

例えば、クリック時にCollider 2Dオブジェクトがあるか調べたい時は次のような感じで使います。

if (Input.GetMouseButtonDown(0))
{
  RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
  if (hit.collider != null)
  {
    // ここに実行したい内容を書きます
    Debug.Log(hit.collider.name);
  }
}

3D用のPhysics.RaycastではCollider 2Dのオブジェクトにヒットしないみたいです。2Dゲームを作る場合は気を付けてください。

リンク

Unity – Scripting API: Physics2D.Raycast
https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html

関連記事

Collider2D.IsTouchingが常にfalseになってしまう場合
詳細はよく分かりませんが、静止状態でない場合にCollider2D.IsTouchingが正しく判定されないことがあるみたいです。 [Unity] collider.IsTouching(collider) が動いてる状態だとまともに動かない件。バグ?|Unity|エンジニアリングメモhttp://chusotudensi.blog.shinobi.jp/unity/-unity-%20c...

Unity2Dでオブジェクトへのクリックを取得する方法
Unity2Dでゲーム内に配置したオブジェクトをクリック(タップ)したい場合は、対象オブジェクトにCollider2D(BoxCollider2DとかCircleCollider2Dなど)を設定した上でPhysics2D.Raycastを使って実装できます。 サンプル void Update() { if (Input.GetMouseButtonDown(0)) { ...

UIとGameObjectが重なっている場合の判定方法
Raycastを使ってGameObjectの選択をしているプログラムで、UIとGameObjectが重なっている場合に使える方法。 using UnityEngine.EventSystems EventSystem.current.IsPointerOverGameObject() リンク How to make UI block raycats (mobile) | Un...

UnityのUIでDrag and Drop
IBeginDragHandler, IDragHandler, IDropHandlerを継承するとOnBeginDrag, OnDrag, OnDropが使えようになるそうです。 public class Example : MonoBehaviour, IBeginDragHandler, IDragHandler, IDropHandler { public void OnBe...

コメントを残す

メールアドレスが公開されることはありません。