91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity中射線碰撞檢測總結

發布時間:2020-07-07 03:35:06 來源:網絡 閱讀:3142 作者:一直都在a 欄目:開發技術

     這陣子通過看視頻,看書對unity中射線碰撞檢測,有了一些了解,這里我把它總結一下寫下來,希望能幫助到你們,也希望通過各位大神來指正不足之處;

     射線碰撞檢測,就是由某一物體發射出一道射線,射線碰撞到物體之后,可以得到該物體的相關信息,然后就可以對該物體進行一些操作的過程了。PS:個人見解;

射線的發射分為可見和不可見,可見的情況就是在游戲當中你可以看到射線,而不可見就是游戲運行時,你只可以在Scene試圖下觀察到它,而這到射線又是存在的;

而其實兩者區別不大,關鍵是看你怎么用它了;

下面先看看不可見的情況吧,還是看代碼;

Ray ray=new Ray(transform.position,transform.forward*100);          //定義一個射線對象,包含射線發射的位置transform.position,發射距離transform.forward*100;
Debug.DrawLine(transform.position,transform.position+transform.forward*100,Color.red);  //這個就是繪制出的射線了,包含發射位置,發射距離和射線的顏色;
RaycastHit hitInfo;                                 //定義一個RaycastHit變量用來保存被撞物體的信息;
if(Physics.Raycast(ray,out hitInfo,100))         //如果碰撞到了物體,hitInfo里面就包含該物體的相關信息;
{
    //hitInfo.point:碰撞點的位置;
    //hitInfo.normal:與碰撞點所在平面垂直的向量;
    //hitInfo.collider.gameobject:可以得到該物體上的所有信息了;
}

 另一種情況:需要在發射射線的物體上添加LineRenderer組件;

LineRenderer render;
void start()
{
    render=transform.GetComponent<LineRenderer>();
    render.SetWidth(0.01f,0.01f);     //SetWidth(startWidth,endWidth);
    render.SetColor(Color.red,Color.red);   //SetColor(startColor,endColor);
    render.SetVertexCount(2);              //設置頂點數
}
void Update()
{
        Ray ray=new Ray(transform.position,transform.forward*100);          //定義一個射線對象,包含射線發射的位置transform.position,
                                                                            // 發射距離transform.forward*100;                                                              
        RaycastHit hitInfo;                                 //定義一個RaycastHit變量用來保存被撞物體的信息;
        if(Physics.Raycast(ray,out hitInfo,100))         //如果碰撞到了物體,hitInfo里面就包含該物體的相關信息;
        {
            //hitInfo.point:碰撞點的位置;
            //hitInfo.normal:與碰撞點所在平面垂直的向量;
            //hitInfo.collider.gameobject:可以得到該物體上的所有信息了;
            if(Input.GetMouseButtonDown(0))
            {
                render.SetPosition(0,transform.position);            //射線起始位置;
                render.SetPosition(1,transform.position+transform.forward);    //射線方向;
            }
            render.SetVertexCount(0);                 //消除射線;
        }    
}

   ok,簡單吧,代碼是我直接在這上面寫的,有什么錯誤,歡迎指正哦!共同努力,耶unity中射線碰撞檢測總結     

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

府谷县| 德安县| 东台市| 锡林浩特市| 永胜县| 合水县| 定安县| 灵宝市| 福海县| 枣阳市| 教育| 平果县| 五寨县| 奉节县| 阳泉市| 霍山县| 静宁县| 江川县| 霸州市| 罗源县| 龙泉市| 瓦房店市| 汕头市| 三台县| 永川市| 南木林县| 濉溪县| 报价| 临夏县| 邻水| 德清县| 和顺县| 康定县| 乡宁县| 通州区| 铜梁县| 朝阳县| 太康县| 沙河市| 仁布县| 武清区|