Unity でのマウス コントロール

このチュートリアルでは、Unity で基本的なマウス コントロールを実装する方法を学習します。マウス入力の検出、マウス クリックの処理、マウスの移動、マウスを使用したゲーム オブジェクトとのやり取りについて説明します。

プロジェクトの設定

コーディングを始める前に、簡単な Unity プロジェクトを設定しましょう。

  1. 新しい Unity プロジェクトを作成します。
  2. シーンに新しい 3D または 2D オブジェクト (キューブやスプライトなど) を追加します。
  3. MouseController という名前の新しい C# スクリプトを作成し、それをメインのカメラまたは任意の空の GameObject にアタッチします。

マウス入力の検出

Unity マウス入力を検出するための組み込みメソッドを提供します。マウス ボタンの押下を検出するには、Input.GetMouseButtonDown メソッドを使用できます。

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // Left mouse button
        {
            Debug.Log("Left mouse button pressed");
        }

        if (Input.GetMouseButtonDown(1)) // Right mouse button
        {
            Debug.Log("Right mouse button pressed");
        }
    }
}

マウスクリックの処理

オブジェクト上でのマウス クリックを処理するには、レイキャスティングを使用する必要があります。レイキャスティングを使用すると、マウス クリックがシーン内のゲーム オブジェクトと交差するかどうかを検出できます。

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log("Hit: " + hit.transform.name);
                // Perform actions on the hit object here
            }
        }
    }
}

マウス動作

Unity でのマウスの動きの検出は、Input.GetAxis を使用して行うことができます。Mouse X 軸と Mouse Y 軸を使用して、水平方向と垂直方向のマウスの動きを取得できます。

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

ゲームオブジェクトとのインタラクション

スクリプトを拡張して、ゲーム オブジェクトと対話してみましょう。オブジェクトがクリックされると、そのオブジェクトの色が変更されます。

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Renderer renderer = hit.transform.GetComponent();
                if (renderer != null)
                {
                    renderer.material.color = Random.ColorHSV();
                }
            }
        }

        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

結論

Unity では、マウス コントロールの基本について説明しました。マウス入力の検出、マウス クリックの処理、マウスの動きの追跡、レイキャスティングを使用したゲーム オブジェクトとのやり取りの方法を学びました。これらの概念を拡張して、Unity プロジェクトでより複雑なやり取りを作成できます。