▶
【Unity連載】プログラムからGameObjectやComponentの有効無効を切り替える
▶
【Unity連載】ランダムな要素の作成には乱数を使おう
▶
【Unity連載】Enumを使ってゲーム中の状態や条件をわかりやすく管理しよう
▶
【Unity連載】オブジェクトの親子関係
▶
【Unity連載】ワールド空間とローカル空間
▶
【Unity連載】オブジェクトの向き(ベクトル)の取得
▶
【Unity連載】コンソールにログを出力しよう!
▶
【Unity連載】条件分岐をしよう!(if文)
▶
【Unity連載】条件分岐をしよう!(switch文)
UnityでクリックされたGameObjectを取得する方法
左クリックされたGameObjectを取得する方法です。タップでも動作します。
3Dオブジェクトと2Dオブジェクトの時で書き方が違うので注意。
※厳密にはコライダーが3Dか2Dで異なる。
一応Update内にコピペすればそのまま動きます。
3Dオブジェクトをクリックするとき
using UnityEngine; public class GetClickedGameObject : MonoBehaviour { GameObject clickedGameObject; void Update () { if (Input.GetMouseButtonDown(0)) { clickedGameObject = null; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit = new RaycastHit(); if (Physics.Raycast(ray, out hit)) { clickedGameObject = hit.collider.gameObject; } Debug.Log(clickedGameObject); } } }
クリック対象のGameObjectには3Dコライダーを入れてください。
変数 clickedGameObject にクリックしたGameObjectが代入されます。
2Dオブジェクトをクリックするとき
using UnityEngine; public class GetClickedGameObject : MonoBehaviour { GameObject clickedGameObject; void Update () { if (Input.GetMouseButtonDown(0)) { clickedGameObject = null; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit2D hit2d = Physics2D.Raycast((Vector2)ray.origin, (Vector2)ray.direction); if (hit2d) { clickedGameObject = hit2d.transform.gameObject; } Debug.Log(clickedGameObject); } } }
クリック対象のGameObjectには2Dコライダーを入れてください。
変数 clickedGameObject にクリックしたGameObjectが代入されます。
補足
これらの処理には Ray というAPIが使われています。
Physics.Raycast や Physics2D.Raycast はオーバーロード(引数の指定の仕方)が複数あるので、詳しくなればもっと色々なことが出来るようになります。(Rayを飛ばす距離や向きの変更など)
以上です。

▶
【Unity連載】プログラムからGameObjectやComponentの有効無効を切り替える
▶
【Unity連載】ランダムな要素の作成には乱数を使おう
▶
【Unity連載】Enumを使ってゲーム中の状態や条件をわかりやすく管理しよう
▶
【Unity連載】オブジェクトの親子関係
▶
【Unity連載】ワールド空間とローカル空間
▶
【Unity連載】オブジェクトの向き(ベクトル)の取得
▶
【Unity連載】コンソールにログを出力しよう!
▶
【Unity連載】条件分岐をしよう!(if文)
▶
【Unity連載】条件分岐をしよう!(switch文)