Comenzi mouse în Unity

În acest tutorial, veți învăța cum să implementați controalele de bază ale mouse-ului în Unity. Vom acoperi detectarea intrării mouse-ului, gestionarea clicurilor mouse-ului, mișcarea mouse-ului și interacțiunea cu obiectele jocului folosind mouse-ul.

Configurarea Proiectului

Înainte de a începe să codificăm, să configuram un proiect simplu Unity:

  1. Creați un nou proiect Unity.
  2. Adăugați un nou obiect 3D sau 2D la scenă (de exemplu, un Cub sau un Sprite).
  3. Creați un nou script C# numit MouseController și atașați-l la camera principală sau la orice GameObject gol.

Detectarea intrării mouse-ului

Unity oferă metode încorporate pentru a detecta intrarea mouse-ului. Putem folosi metoda Input.GetMouseButtonDown pentru a detecta apăsările butonului mouse-ului.

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

Gestionarea clicurilor de mouse

Pentru a gestiona clicurile mouse-ului pe obiecte, trebuie să folosim Raycasting. Raycasting ne permite să detectăm dacă un clic de mouse se intersectează cu orice obiect de joc din scenă.

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

Mișcarea mouse-ului

Detectarea mișcării mouse-ului în Unity se poate face folosind Input.GetAxis. Putem folosi axele Mouse X și Mouse Y pentru a obține mișcarea mouse-ului în direcțiile orizontale și 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);
        }
    }
}

Interacțiunea cu obiectele jocului

Să extindem scriptul pentru a interacționa cu obiectele jocului. Vom schimba culoarea unui obiect când se face clic pe acesta.

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

Concluzie

Am acoperit elementele de bază ale comenzilor mouse-ului în Unity. Am învățat cum să detectăm intrarea mouse-ului, să gestionăm clicurile mouse-ului, să urmărim mișcarea mouse-ului și să interacționăm cu obiectele jocului folosind Raycasting. Aceste concepte pot fi extinse pentru a crea interacțiuni mai complexe în proiectele dvs. Unity.