Unity 中的鼠标控制

在本教程中,您将学习如何在 Unity 中实现基本的鼠标控制。我们将介绍鼠标输入检测、处理鼠标点击、鼠标移动以及使用鼠标与游戏对象交互。

设置项目

在开始编码之前,让我们先建立一个简单的 Unity 项目:

  1. 创建一个新的 Unity 项目。
  2. 向场景中添加新的 3D 或 2D 对象(例如,立方体或精灵)。
  3. 创建一个名为 MouseController 的新 C# 脚本并将其附加到主摄像头或任何空的游戏对象。

检测鼠标输入

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

处理鼠标点击

要处理鼠标点击对象,我们需要使用光线投射。光线投射允许我们检测鼠标点击是否与场景中的任何游戏对象相交。

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

鼠标移动

可以使用 Input.GetAxis 检测 Unity 中的鼠标移动。我们可以使用 Mouse XMouse 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 中介绍了鼠标控制的基础知识。我们学习了如何检测鼠标输入、处理鼠标点击、跟踪鼠标移动以及使用光线投射与游戏对象交互。这些概念可以扩展以在您的 Unity 项目中创建更复杂的交互。