Files

53 lines
1.9 KiB
C#

using UnityEngine;
namespace Utils
{
public static class MousePosition
{
/// <summary>
/// 获取鼠标的屏幕位置(以像素为单位)。
/// </summary>
/// <returns>鼠标的屏幕位置 (Vector2)。</returns>
public static Vector2 GetScreenPosition()
{
return Input.mousePosition;
}
/// <summary>
/// 获取鼠标的二维世界位置(基于主摄像机的屏幕到世界转换)。
/// </summary>
/// <param name="camera">用于计算的摄像机,默认为主摄像机。</param>
/// <returns>鼠标的二维世界位置 (Vector2)。</returns>
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);
}
/// <summary>
/// 获取鼠标的二维世界位置并进行整数吸附(基于主摄像机的屏幕到世界转换)。
/// </summary>
/// <param name="camera">用于计算的摄像机,默认为主摄像机。</param>
/// <returns>吸附后的二维世界位置 (Vector2Int)。</returns>
public static Vector3Int GetSnappedWorldPosition(Camera camera = null)
{
// 获取世界位置
var worldPosition = GetWorldPosition(camera);
// 对世界位置进行整数吸附
return Vector3Int.RoundToInt(worldPosition);
}
}
}