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

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

获取鼠标世界位置 - C#

在编写游戏或图形应用程序时,有时需要获取鼠标指针在世界坐标系中的位置。在Unity引擎中,可以很方便地通过调用Camera.ScreenToWorldPoint方法实现该功能。

下面是一个示例代码片段,演示了在Unity中如何获取鼠标世界位置:

using UnityEngine;

public class MouseWorldPosition : MonoBehaviour
{
    public Camera mainCamera;

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Vector3 mousePosition = Input.mousePosition;
            mousePosition.z = -mainCamera.transform.position.z;
            Vector3 worldPosition = mainCamera.ScreenToWorldPoint(mousePosition);
            Debug.Log("Mouse world position: " + worldPosition);
        }
    }
}

上述代码片段中,首先声明了一个Camera类型的变量mainCamera,用于存储场景中用于观察的摄像机。在Update函数中,判断用户是否按下了鼠标左键。如果是,首先获取鼠标指针在屏幕坐标系中的位置,并将其z坐标设置为摄像机的位置,以将其转换为世界坐标系中的位置。然后,调用Camera.ScreenToWorldPoint方法将屏幕坐标转换为世界坐标,并将其保存在名为worldPosition的Vector3变量中。最后,使用Debug.Log方法将该变量输出到Unity编辑器中的控制台窗口。

需要注意的是,本示例中获取的是鼠标指针在世界坐标系中的位置,而不是鼠标所在的物体的位置。如果需要获取鼠标指针所在的物体的位置,可以使用RaycastHit、Ray、Physics.Raycast等相关方法实现。

综上所述,通过本示例代码片段,可以轻松地实现获取鼠标指针在世界坐标系中的位置的功能。