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);
}
}
}