遊テックプログラミング教室

ノートNOTE

クリックされたゲームオブジェクトを取得する(Unity)

Unityで左クリックされたゲームオブジェクトを取得する方法です。

3Dと2Dで書き方が異なります。

どちらもコライダーが必要です。

 

3Dの場合

クリックされたゲームオブジェクトの名前をコンソールに出力して、そのオブジェクトを破壊(削除)するプログラムです。

例えばMainCameraなど適当なゲームオブジェクトにアタッチしてください。

適当なゲームオブジェクトを配置して実行し、動作を確認しよう。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ClickedGameObject3D : MonoBehaviour
{
    GameObject clickedGameObject;//クリックされたゲームオブジェクトを代入する変数

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(ray, out hit))
            {
                clickedGameObject = hit.collider.gameObject;
                Debug.Log(clickedGameObject.name);//ゲームオブジェクトの名前を出力
                Destroy(clickedGameObject);//ゲームオブジェクトを破壊
            }
        }
    }
}

2Dの場合

クリックされたゲームオブジェクトの名前をコンソールに出力して、そのオブジェクトを破壊(削除)するプログラムです。

例えばMainCameraなど適当なゲームオブジェクトにアタッチしてください。

適当なゲームオブジェクトを配置して実行し、動作を確認しよう。

コライダーを付けるのを忘れないようにしよう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ClickedGameObject2D : MonoBehaviour
{
    GameObject clickedGameObject;//クリックされたゲームオブジェクトを代入する変数

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            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.name);//ゲームオブジェクトの名前を出力
                Destroy(clickedGameObject);//ゲームオブジェクトを破壊
            }

        }
    }
}