Unityで左クリックされたゲームオブジェクトを取得する方法です。
3Dと2Dで書き方が異なります。
どちらもコライダーが必要です。
クリックされたゲームオブジェクトの名前をコンソールに出力して、そのオブジェクトを破壊(削除)するプログラムです。
例えば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);//ゲームオブジェクトを破壊
}
}
}
}
クリックされたゲームオブジェクトの名前をコンソールに出力して、そのオブジェクトを破壊(削除)するプログラムです。
例えば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);//ゲームオブジェクトを破壊
}
}
}
}