Unity之射线检测

射线检测在我们平时玩的游戏中并不少见,第一人称设计游戏就是一个案例。我们鼠标或者准星都是用来瞄准敌人的,还有在游戏过程中,我们拾取金币,药水等装备也可以使用射线
那么我们通过下面的例子来简单的说一下射线。
我们首先来一同学习一下如何制作射线。我们简单的分为三步

    /// <summary>
    /// 基础的射线检测
    /// </summary>
    void Task01()
    {
        //第一步 创建射线 Ray
        //Ray ray = new Ray();
        //谁带有MainCamera标签  是就是主摄像机
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //我们可以在Scene面板中看到 在Game面板中我们时看不到的 这有利于我们在开发中的测试
        Debug.DrawRay(ray.origin,ray.direction,Color.red);

        //第二步 定义碰撞点 
        RaycastHit hits;
        //第三步 开始发射
        if (Physics.Raycast(ray,out hits,100f))
        {
             //print(hits.collider.name);
             //在这里我们让射线碰到的游戏对象消失
             //这里时标签时是"T_cube"的游戏对象我让其销毁

             if (hits.collider.tag.Equals("T_cube"))
             {
                Destroy(hits.collider.gameObject);
             }
        }
    }

那么我们接下如何做到拾取装备呢?很简单,我们点击一个就加一个鼠标左键点击就OK了。点接完我们就让其消失。这里只是简单的模拟。

    void Task01()
    {
        //第一步 创建射线 Ray
        //Ray ray = new Ray();
        //谁带有MainCamera标签  是就是主摄像机
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        Debug.DrawRay(ray.origin,ray.direction,Color.red);
        //第二步 定义碰撞点 
        RaycastHit hits;
        //第三步 开始发射
        if (Input.GetMouseButtonDown(0))
        {
            if (Physics.Raycast(ray,out hits,100f))
            {
                //print(hits.collider.name);
                if (hits.collider.tag.Equals("T_cube"))
                {
                    //在这里写有关拾取并保存的代码操作
                    Destroy(hits.collider.gameObject);
                }
            }
        }
        //Debug.DrawLine(ray.origin, hits.point,Color.red);
    }

这里写图片描述

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页