3Dゲームオブジェクトをマウスでクリックした時に処理をしたい

2022年8月22日

オブジェクトをクリックするとそのオブジェクトのComponentにアクセスできるようにします。

void Update()
{
    // マウス左ボタンをクリックした時
    if (Input.GetMouseButtonDown(0))
    {
        // スクリーン位置から3Dオブジェクトに対してRay(光線)を発射
        Ray rayOrigin = Camera.main.ScreenPointToRay(Input.mousePosition);

        // Rayがオブジェクトにヒットした場合
        if (Physics.Raycast(rayOrigin, out RaycastHit hitInfo))
        {
            // タグがPlayerの場合(このif文を削除すると、全てのゲームオブジェクトに対する処理になります)
            if (hitInfo.collider.CompareTag("Player"))
            {
                // ランダムな色に変更する場合
                hitInfo.collider.GetComponent<MeshRenderer>().material.color = 
                    new Color(Random.value, Random.value, Random.value);
            }
        }
    }
}

usingを含めた全コード

using UnityEngine;

public class RayCastTest : MonoBehaviour
{
    void Update()
    {
        // マウス左ボタンをクリックした時
        if (Input.GetMouseButtonDown(0))
        {
            // スクリーン位置から3Dオブジェクトに対してRay(光線)を発射
            Ray rayOrigin = Camera.main.ScreenPointToRay(Input.mousePosition);

            // Rayがオブジェクトにヒットした場合
            if (Physics.Raycast(rayOrigin, out RaycastHit hitInfo))
            {
                // タグがPlayerの場合(このif文を削除すると、全てのゲームオブジェクトに対する処理になります)
                if (hitInfo.collider.CompareTag("Player"))
                {
                    // ランダムな色に変更する場合
                    hitInfo.collider.GetComponent<MeshRenderer>().material.color =
                        new Color(Random.value, Random.value, Random.value);
                }
            }
        }
    }
}

Unity

Posted by hidepon