Управление мышью в Unity

В этом уроке вы узнаете, как реализовать базовые элементы управления мышью в Unity. Мы рассмотрим обнаружение ввода мыши, обработку щелчков мыши, движение мыши и взаимодействие с игровыми объектами с помощью мыши.

Настройка проекта

Прежде чем приступить к кодированию, давайте создадим простой проект Unity:

  1. Создайте новый проект Unity.
  2. Добавьте на сцену новый 3D- или 2D-объект (например, куб или спрайт).
  3. Создайте новый скрипт C# с именем MouseController и прикрепите его к основной камере или любому пустому игровому объекту.

Обнаружение ввода мыши

Unity предоставляет встроенные методы для обнаружения ввода мыши. Мы можем использовать метод Input.GetMouseButtonDown для обнаружения нажатия кнопок мыши.

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

Обработка щелчков мыши

Для обработки щелчков мыши по объектам нам нужно использовать Raycasting. Raycasting позволяет нам определять, пересекается ли щелчок мыши с какими-либо игровыми объектами на сцене.

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

Движение мыши

Обнаружение движения мыши в Unity может быть выполнено с помощью Input.GetAxis. Мы можем использовать оси Mouse X и Mouse Y, чтобы получить движение мыши в горизонтальном и вертикальном направлениях.

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

Взаимодействие с игровыми объектами

Давайте расширим наш скрипт для взаимодействия с игровыми объектами. Мы будем менять цвет объекта при щелчке по нему.

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

Заключение

Мы рассмотрели основы управления мышью в Unity. Мы узнали, как определять ввод мыши, обрабатывать щелчки мыши, отслеживать движение мыши и взаимодействовать с игровыми объектами с помощью Raycasting. Эти концепции можно расширить для создания более сложных взаимодействий в ваших проектах Unity.