Елементи керування мишею в Unity

У цьому підручнику ви дізнаєтесь, як реалізувати основні елементи керування мишею в Unity. Ми розглянемо виявлення введення мишею, обробку клацань миші, рух миші та взаємодію з ігровими об’єктами за допомогою миші.

Налаштування проекту

Перш ніж почати кодування, давайте налаштуємо простий проект Unity:

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

Виявлення введення мишею

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. Ми можемо використовувати осі миші X і миші 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.