Unity-攝像機射線
2021-03-18 08:56 作者:unity_某某師_高錦錦 | 我要投稿
了解視錐體部分說明了攝像機視圖中的任何一點都對應于世界空間中的一條線。有時使用這條線的數(shù)學表示形式是有用的,Unity 能夠以?Ray?對象的形式提供該表示形式。Ray 始終對應于視圖中的一個點,因此 Camera 類提供?ScreenPointToRay?和?ViewportPointToRay?函數(shù)。兩者之間的區(qū)別在于 ScreenPointToRay 期望以像素坐標的形式提供該點,而 ViewportPointToRay 則接受 0..1 范圍內(nèi)的標準化坐標(其中 0 表示視圖的左下角,1 表示右上角)。這些函數(shù)中的每一個函數(shù)都返回由一個原點和一個矢量(該矢量顯示從該原點出發(fā)的線條方向)組成的 Ray。射線 (Ray) 源自近裁剪面而不是攝像機 (Camera) 的 transform.position 點。
射線投射
來自攝像機的射線最常見的用途是將射線投射 (raycast)?到場景中。射線投射從原點沿著射線方向發(fā)送假想的“激光束”,直至命中場景中的碰撞體。隨后會返回有關(guān)該對象和?RaycastHit?對象內(nèi)的投射命中點的信息。這是一種基于對象在屏幕上的圖像來定位對象的非常有用的方法。例如,可使用以下代碼確定鼠標位置處的對象:
C# 腳本示例:
JS 腳本示例:
沿著射線移動攝像機
獲取對應于屏幕位置的射線再沿著該射線移動攝像機有時很有用。例如,需要允許用戶使用鼠標選擇對象,然后放大該對象,同時將其“固定”到鼠標下的相同屏幕位置(這種操作可能很有用,例如,當攝像機正在查看戰(zhàn)術(shù)地圖時)。執(zhí)行此操作的代碼非常簡單:
C# 腳本示例:
JS 腳本示例:
標簽: