C# 如何将框的边界转换为屏幕坐标

C# 如何将框的边界转换为屏幕坐标,c#,unity3d,geometry,coordinates,C#,Unity3d,Geometry,Coordinates,我有一个2D unity项目。 我不能依赖于OnMouseExit,因为重叠的2D框碰撞器会导致即使鼠标在边界内也会触发该方法,因为前面有其他东西(这不是我的意图) 我打算使用以下方法手动检查每一帧上是否有鼠标退出: if(!_collider.bounds.contains(Input.MousePosition)) 但这不起作用,因为“鼠标位置”是指屏幕上的像素数,“边界”是指相对于场景原点的“单位”。摄影机是正交的,可以四处滑动以查看世界精灵所在的二维平面。我不知道屏幕上有多少个“单位”

我有一个2D unity项目。 我不能依赖于
OnMouseExit
,因为重叠的2D框碰撞器会导致即使鼠标在边界内也会触发该方法,因为前面有其他东西(这不是我的意图)

我打算使用以下方法手动检查每一帧上是否有鼠标退出:

if(!_collider.bounds.contains(Input.MousePosition))
但这不起作用,因为“鼠标位置”是指屏幕上的像素数,“边界”是指相对于场景原点的“单位”。摄影机是正交的,可以四处滑动以查看世界精灵所在的二维平面。我不知道屏幕上有多少个“单位”,我怀疑只要你改变纵横比或屏幕大小,它就会改变。

你可以使用,根据相机的视口将屏幕点转换为3D/2D点,如下所示:

if(!_collider.bounds.contains(Camera.main.ScreenToWorldPoint(Input.MousePosition)))