📅  最后修改于: 2023-12-03 15:20:53.537000             🧑  作者: Mango
在Unity中,我们可能需要获取鼠标的位置,以实现一些鼠标交互的功能。下面介绍几种获取鼠标位置的方法。
我们可以使用 Input.mousePosition
来获取鼠标在屏幕上的坐标,返回的是一个 Vector3
类型的值,其中 x
和 y
表示屏幕上的坐标,z
通常为0,表示在屏幕上的位置。
Vector3 mousePos = Input.mousePosition;
Debug.Log("Mouse position on screen: " + mousePos);
如果我们需要将屏幕上的鼠标坐标转换为世界坐标,可以使用摄像机的 ScreenToWorldPoint
方法。需要将鼠标坐标转换为摄像机上的一个点,再使用摄像机将该点转换为世界坐标。
Vector3 mousePos = Input.mousePosition;
mousePos.z = Camera.main.nearClipPlane; // 设置摄像机到屏幕的距离
Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
Debug.Log("Mouse position in world: " + worldPos);
另一种获取鼠标指向的物体的方法是使用 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
则可以用于检测鼠标位置是否击中了某个物体。在具体应用中,我们可以根据需求选择不同的方法。