unity屏幕坐標(biāo)和世界坐標(biāo)轉(zhuǎn)換問(wèn)題

unity屏幕坐標(biāo)和世界坐標(biāo)轉(zhuǎn)換在射線檢測(cè)代碼影響

紅色標(biāo)記的物體在屏幕的位置如上圖
這里加上一個(gè)2d射線檢測(cè)的代碼:
這里我畫(huà)了一個(gè)視線,以及打印物體到攝像機(jī)的距離是127

? ?設(shè)置?mousePos.z = 1000(> far:?582.62且遠(yuǎn)大于攝像機(jī)到紅色物體的距離127);這時(shí)候我們點(diǎn)擊紅色物體沒(méi)有反應(yīng)
? ?同理,設(shè)置?mousePos.z <?40.86 也會(huì)沒(méi)有反應(yīng)
當(dāng)我們?cè)O(shè)置?mousePos.z = 127,檢測(cè)就能順利執(zhí)行并且打印了物體的名稱。

所以3d空間中,當(dāng)從屏幕坐標(biāo)轉(zhuǎn)世界坐標(biāo)的時(shí)候注意我們的 mousePos.z 的范圍;不然檢測(cè)物體會(huì)出現(xiàn)各種問(wèn)題。
判斷UI上是否有物體
這里我們還寫了一個(gè)代碼:
用于判斷UI上是否有物體


這里設(shè)置Canvas的Blocking Object為All;Blocking Mask為Everything,那么物體如果在UI范圍內(nèi)射線會(huì)被阻擋
當(dāng)紅色物體在canvas的屏幕范圍外,我們點(diǎn)擊物體會(huì)被檢測(cè),反之則不能