Điều khiển chuột trong Unity

Trong hướng dẫn này, bạn sẽ học cách triển khai các điều khiển chuột cơ bản trong Unity. Chúng tôi sẽ đề cập đến phát hiện đầu vào chuột, xử lý nhấp chuột, di chuyển chuột và tương tác với các đối tượng trò chơi bằng chuột.

Thiết lập dự án

Trước khi bắt đầu viết mã, chúng ta hãy thiết lập một dự án Unity đơn giản:

  1. Tạo một dự án Unity mới.
  2. Thêm đối tượng 3D hoặc 2D mới vào cảnh (ví dụ: Hình khối hoặc Hình ảnh động).
  3. Tạo một tập lệnh C# mới có tên MouseController và gắn nó vào Camera chính hoặc bất kỳ GameObject trống nào.

Phát hiện đầu vào của chuột

Unity cung cấp các phương thức tích hợp để phát hiện đầu vào của chuột. Chúng ta có thể sử dụng phương thức Input.GetMouseButtonDown để phát hiện các lần nhấn nút chuột.

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

Xử lý nhấp chuột

Để xử lý các cú nhấp chuột vào đối tượng, chúng ta cần sử dụng Raycasting. Raycasting cho phép chúng ta phát hiện xem cú nhấp chuột có giao nhau với bất kỳ đối tượng trò chơi nào trong cảnh không.

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

Di chuyển chuột

Phát hiện chuyển động của chuột trong Unity có thể được thực hiện bằng cách sử dụng Input.GetAxis. Chúng ta có thể sử dụng các trục Mouse XMouse Y để có được chuyển động của chuột theo hướng ngang và dọc.

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

Tương tác với các đối tượng trong trò chơi

Hãy mở rộng tập lệnh của chúng ta để tương tác với các đối tượng trong trò chơi. Chúng ta sẽ thay đổi màu của một đối tượng khi nhấp vào nó.

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

Phần kết luận

Chúng tôi đã đề cập đến những điều cơ bản về điều khiển chuột trong Unity. Chúng tôi đã học cách phát hiện đầu vào chuột, xử lý các cú nhấp chuột, theo dõi chuyển động của chuột và tương tác với các đối tượng trong trò chơi bằng Raycasting. Những khái niệm này có thể được mở rộng để tạo ra các tương tác phức tạp hơn trong các dự án Unity của bạn.