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:
- Crea un nuovo progetto Unity.
- Aggiungere un nuovo oggetto 3D o 2D alla scena (ad esempio un cubo o uno sprite).
- 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.