Controlli del mouse in Unity

In questo tutorial imparerai come implementare i controlli base del mouse in Unity. Parleremo del rilevamento dell'input del mouse, della gestione dei clic del mouse, del movimento del mouse e dell'interazione con gli oggetti di gioco tramite il mouse.

Impostazione del progetto

Prima di iniziare a scrivere il codice, impostiamo un semplice progetto Unity:

  1. Crea un nuovo progetto Unity.
  2. Aggiungere un nuovo oggetto 3D o 2D alla scena (ad esempio un cubo o uno sprite).
  3. Crea un nuovo script C# denominato MouseController e associalo alla telecamera principale o a un GameObject vuoto.

Rilevamento dell'input del mouse

Unity fornisce metodi incorporati per rilevare l'input del mouse. Possiamo usare il metodo Input.GetMouseButtonDown per rilevare le pressioni dei pulsanti del mouse.

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");
        }
    }
}

Gestione dei clic del mouse

Per gestire i clic del mouse sugli oggetti, dobbiamo usare il Raycasting. Il Raycasting ci consente di rilevare se un clic del mouse interseca uno qualsiasi degli oggetti di gioco nella scena.

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
            }
        }
    }
}

Movimento del mouse

Il rilevamento del movimento del mouse in Unity può essere effettuato utilizzando Input.GetAxis. Possiamo utilizzare gli assi Mouse X e Mouse Y per ottenere il movimento del mouse nelle direzioni orizzontale e verticale.

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);
        }
    }
}

Interazione con gli oggetti di gioco

Estendiamo il nostro script per interagire con gli oggetti di gioco. Cambieremo il colore di un oggetto quando viene cliccato.

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);
        }
    }
}

Conclusione

Abbiamo trattato le basi dei controlli del mouse in Unity. Abbiamo imparato come rilevare l'input del mouse, gestire i clic del mouse, tracciare i movimenti del mouse e interagire con gli oggetti di gioco usando Raycasting. Questi concetti possono essere ampliati per creare interazioni più complesse nei tuoi progetti Unity.