using UnityEngine; namespace Utils { public static class MousePosition { /// /// 获取鼠标的屏幕位置(以像素为单位)。 /// /// 鼠标的屏幕位置 (Vector2)。 public static Vector2 GetScreenPosition() { return Input.mousePosition; } /// /// 获取鼠标的二维世界位置(基于主摄像机的屏幕到世界转换)。 /// /// 用于计算的摄像机,默认为主摄像机。 /// 鼠标的二维世界位置 (Vector2)。 public static Vector2 GetWorldPosition(Camera camera = null) { // 如果未指定摄像机,则使用主摄像机 if (!camera) { camera = Camera.main; } // 获取鼠标屏幕位置 var mouseScreenPosition = Input.mousePosition; // 将屏幕坐标转换为世界坐标 var worldPosition = camera.ScreenToWorldPoint(mouseScreenPosition); // 返回二维坐标 (忽略 z 轴) return new Vector2(worldPosition.x, worldPosition.y); } /// /// 获取鼠标的二维世界位置并进行整数吸附(基于主摄像机的屏幕到世界转换)。 /// /// 用于计算的摄像机,默认为主摄像机。 /// 吸附后的二维世界位置 (Vector2Int)。 public static Vector3Int GetSnappedWorldPosition(Camera camera = null) { // 获取世界位置 var worldPosition = GetWorldPosition(camera); // 对世界位置进行整数吸附 return Vector3Int.RoundToInt(worldPosition); } } }