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

时间:2015-11-12 02:28:36

标签: c# unity3d geometry coordinates

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

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

if(!_collider.bounds.contains(Input.MousePosition))

但是这不起作用,因为“鼠标位置”是指屏幕上的像素数量,“边界”是相对于场景原点的“单位”。相机是正交的,可以滑动以查看世界精灵所坐的2D平面。我不知道有多少“单位”适合整个屏幕,并怀疑一旦你改变宽高比或屏幕尺寸就会改变它。

1 个答案:

答案 0 :(得分:2)

您可以使用ScreenToWorldPoint()根据相机的视口从屏幕点转换为3D / 2D点,如下所示:

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