天天看點

Unity中 建立射線的兩種方法

通過錄影機

我們通過錄影機讓螢幕點轉化為射線

ray = camera.main.screenpointtoray(input.mouseposition);

直接new出來

ray ray = new ray(v3 origin, v3 dir);  //指定原點和方向

physics.raycast(ray, out hit); //進行碰撞檢測

//hit當中包含了很多碰撞資訊

//hit.point 擷取碰撞點

//hit.normal 碰撞面的法線方向,即與碰撞面垂直的線

//hit.distance 碰撞點到射線原點的距離

// hit.texturecoord 紋理坐标 可以用于紋理或者彈痕繪制,如果對象沒有meshcolider則傳回null  

為什麼要建立射線

我們通過input.mouseposition擷取到的v3坐标是在z方向是0,我通過log列印之後,隻是在x,y 方向上有輸出

input.mouseposition 是實時擷取滑鼠點的位置,如果僅僅是想要在點選時擷取其位置,那麼要加一個if語句

我們可以通過hit.point擷取滑鼠點選的三維空間的坐标

if(input.getkeydown(0))

{

    if(physics.raycast(ray, out hit))

    {

        agent.setdestination(hit.point);

    }