Controles do mouse no Unity

Neste tutorial, você aprenderá como implementar controles básicos do mouse em Unity. Abordaremos a detecção de entrada do mouse, o tratamento de cliques do mouse, o movimento do mouse e a interação com objetos do jogo usando o mouse.

Configurando o Projeto

Antes de começarmos a codificar, vamos configurar um projeto Unity simples:

  1. Crie um novo projeto Unity.
  2. Adicione um novo objeto 3D ou 2D à cena (por exemplo, um cubo ou um sprite).
  3. Crie um novo script C# chamado MouseController e anexe-o à câmera principal ou a qualquer GameObject vazio.

Detectando entrada do mouse

Unity fornece métodos integrados para detectar entrada do mouse. Podemos usar o método Input.GetMouseButtonDown para detectar pressionamentos de botão do 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");
        }
    }
}

Lidando com cliques do mouse

Para lidar com cliques do mouse em objetos, precisamos usar Raycasting. Raycasting nos permite detectar se um clique do mouse cruza com quaisquer objetos do jogo na cena.

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 do mouse

A detecção do movimento do mouse em Unity pode ser feita usando Input.GetAxis. Podemos usar os eixos Mouse X e Mouse Y para obter o movimento do mouse nas direções horizontal e 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);
        }
    }
}

Interagindo com objetos do jogo

Vamos estender nosso script para interagir com objetos do jogo. Mudamos a cor de um objeto quando ele é clicado.

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

Conclusão

Abordamos os conceitos básicos dos controles do mouse em Unity. Aprendemos como detectar a entrada do mouse, manipular cliques do mouse, rastrear o movimento do mouse e interagir com objetos do jogo usando Raycasting. Esses conceitos podem ser expandidos para criar interações mais complexas em seus projetos Unity.