unity中的射線檢測


unity中的檢測包含了范圍檢測和射線檢測

以下收錄了唐老獅專欄的詳解(唐老獅yyds)老師講的特別簡單易懂

【唐老獅】Unity——物理系統(射線檢測) - 嗶哩嗶哩 (bilibili.com)

【唐老獅】Unity——物理系統(范圍檢測) - 嗶哩嗶哩 (bilibili.com)

 

在記錄一則自己用到實例,是一個開啟高亮顯示的功能,就是從攝像機中心發射一條射線來記錄接觸的第一個物體

核心代碼如下:

    void SetInteractive()
    {
        Ray ray = new Ray(transform.position, transform.forward);
        //檢測是否對焦上物體
        // RaycastHit用來保存射線的探測結果
        RaycastHit info;

        // 從muzzlepoint的位置,向攝像機面向的正方向射出一根射線
        // 射線只能與m_layer所指定的層碰撞
        bool hit = Physics.Raycast(ray, out info, InterDistance, m_layer);

        string activeObjName = InterActiveManager.GetInstance().ActiveObjName;

        //如果檢測到物品 而且檢測不重復
        if (hit && activeObjName != info.transform.gameObject.name)
        {
            //就設置激活 激活后把當前激活的物品在管理類中進行一個設置
            EventCenter.GetInstance().EventTrigger("SetInteractive" + info.transform.name);
            InterActiveManager.GetInstance().ActiveObjName = info.transform.name;
        }

        //如果沒有檢測到物品 而且管理類中當前激活的物品不為空
        else if (!hit && activeObjName!=null)
        {
            //先取消先前激活物品的激活狀態 之后將管理類中的激活記號置為null
            EventCenter.GetInstance().EventTrigger("CancelInteractive" + activeObjName);
            InterActiveManager.GetInstance().ActiveObjName = null;
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM