📜  unity 获取鼠标位置 - C# (1)

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

Unity 获取鼠标位置 - C#

在Unity中,我们可能需要获取鼠标的位置,以实现一些鼠标交互的功能。下面介绍几种获取鼠标位置的方法。

1. Input.mousePosition

我们可以使用 Input.mousePosition 来获取鼠标在屏幕上的坐标,返回的是一个 Vector3 类型的值,其中 xy 表示屏幕上的坐标,z 通常为0,表示在屏幕上的位置。

Vector3 mousePos = Input.mousePosition;
Debug.Log("Mouse position on screen: " + mousePos);
2. Camera.ScreenToWorldPoint

如果我们需要将屏幕上的鼠标坐标转换为世界坐标,可以使用摄像机的 ScreenToWorldPoint 方法。需要将鼠标坐标转换为摄像机上的一个点,再使用摄像机将该点转换为世界坐标。

Vector3 mousePos = Input.mousePosition;
mousePos.z = Camera.main.nearClipPlane; // 设置摄像机到屏幕的距离
Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
Debug.Log("Mouse position in world: " + worldPos);
3. Raycast

另一种获取鼠标指向的物体的方法是使用 Raycast。我们可以从摄像机的位置向鼠标所在的屏幕位置发射一条射线,然后检测该射线是否击中了某个物体。

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
    // 如果击中了物体,做一些处理
    Debug.Log("Hit object: " + hit.collider.gameObject);
}
总结

以上就是在Unity中获取鼠标位置的几种方法。Input.mousePosition 适用于获取屏幕坐标,Camera.ScreenToWorldPoint 适用于将屏幕坐标转换成世界坐标,而 Raycast 则可以用于检测鼠标位置是否击中了某个物体。在具体应用中,我们可以根据需求选择不同的方法。