▶
【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ゲーム開発