Controles del ratón en Unity

En este tutorial, aprenderá a implementar controles básicos del mouse en Unity. Cubriremos la detección de entrada del mouse, el manejo de clics del mouse, el movimiento del mouse y la interacción con objetos del juego mediante el mouse.

Configuración del proyecto

Antes de comenzar a codificar, configuremos un proyecto Unity simple:

  1. Crea un nuevo proyecto Unity.
  2. Añade un nuevo objeto 3D o 2D a la escena (por ejemplo, un cubo o un sprite).
  3. Cree un nuevo script en C# llamado MouseController y adjúntelo a la cámara principal o a cualquier GameObject vacío.

Detección de la entrada del ratón

Unity proporciona métodos integrados para detectar la entrada del mouse. Podemos usar el método Input.GetMouseButtonDown para detectar las pulsaciones de los botones 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");
        }
    }
}

Manejo de clics del ratón

Para controlar los clics del ratón sobre los objetos, necesitamos utilizar Raycasting. Raycasting nos permite detectar si un clic del ratón se cruza con algún objeto del juego en la escena.

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

Movimiento del ratón

La detección del movimiento del ratón en Unity se puede realizar mediante Input.GetAxis. Podemos utilizar los ejes Mouse X y Mouse Y para obtener el movimiento del ratón en las direcciones horizontal y vertical.

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

Interactuando con objetos del juego

Vamos a ampliar nuestro script para interactuar con objetos del juego. Cambiaremos el color de un objeto cuando se haga clic en él.

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

Conclusión

Hemos cubierto los conceptos básicos de los controles del mouse en Unity. Aprendimos cómo detectar la entrada del mouse, manejar los clics del mouse, rastrear el movimiento del mouse e interactuar con los objetos del juego mediante Raycasting. Estos conceptos se pueden ampliar para crear interacciones más complejas en sus proyectos Unity.