【Unity】クリックしたゲームオブジェクトを取得する
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
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_317×90]
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発