📜  unity 鼠标点击位置 - C# (1)

📅  最后修改于: 2023-12-03 15:20:53.663000             🧑  作者: Mango

Unity 鼠标点击位置 - C#

在Unity中,我们经常需要获取鼠标点击的位置。这个过程涉及到鼠标输入和坐标转换。本篇文章将介绍如何通过C#在Unity中获取鼠标点击位置。

鼠标输入

首先,我们需要知道如何获取鼠标输入。我们可以使用Input类来检测鼠标的输入。Input类包含了一系列静态方法和属性,可用于获取键盘和鼠标输入。以下是鼠标输入的一些常用方法:

  • Input.GetMouseButtonDown(int button):检测鼠标左、右、中三个按键是否被按下。
    • 参数button:0表示左键,1表示右键,2表示中键。
  • Input.GetMouseButton(int button):检测鼠标左、右、中三个按键是否被按下。
    • 参数button:同上。
  • Input.GetMouseButtonUp(int button):检测鼠标左、右、中三个按键是否被松开。
    • 参数button:同上。
  • Input.mousePosition:获取鼠标在屏幕上的位置(像素坐标)。
坐标转换

我们知道鼠标点击的位置是在屏幕上的像素坐标,但在游戏中,我们往往需要这个坐标在世界空间中的位置。因此,我们需要使用坐标转换来将屏幕坐标转换为世界坐标。以下是两种常用的坐标转换方法:

  • Camera.ScreenToWorldPoint(Vector3 position):将屏幕坐标转换为世界坐标。
    • 参数position:屏幕坐标(像素坐标)。Z轴的值将被忽略。
  • Camera.main:获取主摄像机。
获取鼠标点击位置

有了以上知识,我们就可以开始获取鼠标点击位置了。以下是一段示例代码:

if (Input.GetMouseButtonDown(0))
{
    // 获取主摄像机
    Camera mainCamera = Camera.main;

    // 获取屏幕坐标
    Vector3 screenPos = Input.mousePosition;

    // 将屏幕坐标转换为世界坐标
    Vector3 worldPos = mainCamera.ScreenToWorldPoint(screenPos);

    // 输出世界坐标
    Debug.Log("World Position: " + worldPos);
}

以上代码在鼠标左键被按下时,将输出当前鼠标点击位置在世界空间中的坐标。

总结

本篇文章介绍了如何在Unity中获取鼠标点击位置。我们需要使用Input类来检测鼠标输入,并使用坐标转换方法将屏幕坐标转换为世界坐标。该方法在开发中常用于鼠标操作,比如点击、拖拽、选中等。