2015-11-12 74 views
3

我有一个2D统一项目。 我不能依赖于OnMouseExit,因为重叠的2D盒子碰撞体即使在鼠标位于边界内时也会触发该方法,因为前面还有其他东西(这不是我的意图)。如何将框的边界转换为屏幕坐标

我会用手动检查鼠标退出每帧:

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

但是,这并不工作,因为`鼠标位置”是在屏幕的像素数方面,和“范围”是相对于场景的起源而言的“单位”。相机是Orthographic,可以滑动来观察世界上的精灵坐在的2D平面上。我不知道有多少“单位”适合整个屏幕,并怀疑它会在您更改宽高比或屏幕尺寸后立即改变。

回答

2

您可以使用ScreenToWorldPoint(),从屏幕点到基于相机的视3D/2D点,这样的转换:

if(!_collider.bounds.contains(Camera.main.ScreenToWorldPoint(Input.MousePosition))) 
相关问题