unity屏幕坐标和世界坐标转换问题
unity屏幕坐标和世界坐标转换在射线检测代码影响

红色标记的物体在屏幕的位置如上图
这里加上一个2d射线检测的代码:
这里我画了一个视线,以及打印物体到摄像机的距离是127

设置 mousePos.z = 1000(> far: 582.62且远大于摄像机到红色物体的距离127);这时候我们点击红色物体没有反应
同理,设置 mousePos.z < 40.86 也会没有反应
当我们设置 mousePos.z = 127,检测就能顺利执行并且打印了物体的名称。

所以3d空间中,当从屏幕坐标转世界坐标的时候注意我们的 mousePos.z 的范围;不然检测物体会出现各种问题。
判断UI上是否有物体
这里我们还写了一个代码:
用于判断UI上是否有物体


这里设置Canvas的Blocking Object为All;Blocking Mask为Everything,那么物体如果在UI范围内射线会被阻挡
当红色物体在canvas的屏幕范围外,我们点击物体会被检测,反之则不能

