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