unity受苦记(1)----射线检测目标物体

(unity小白最近爆肝毕业设计受苦记,欢迎指导(好耶!))

系统里面需要实现一个检测目标物体的功能。百度和unity官文找了半天,比较方便的可以用ray来实现。

代码如下

    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//定义主摄像机射线(射向鼠标位置)

        RaycastHit HitPointInfo;//在HitPointInfo中保存被碰撞物体的信息

        bool isCollider = Physics.Raycast(ray,out HitPointInfo); //射线是否碰撞到物体

        //ShowTag(isCollider, HitPointInfo);//显示鼠标所指物体的tag

        //IfHitGround(isCollider, HitPointInfo);//判断鼠标是否指向地面

    }

RaycastHit结构体在涉及到射线的解决方法里很重要,关于射线所碰撞到的碰撞体(collider)的很多信息都存储在里面,比如射线所碰撞到的碰撞体(collider)、和碰撞体碰撞的点的坐标(point)和transform等等...详情UnityEngine.RaycastHit - Unity 脚本 API

当射线碰撞到碰撞体的时候就可以用RaycastHit找到被碰撞到的碰撞体然后处理碰撞体了,这里暂时测试一下输出被碰撞到的碰撞体的tag

    void ShowTag(bool a,RaycastHit b)
    {
        if (a != null)
        {
            Debug.Log(b.collider.tag);
        }//显示鼠标所指物体tag
    }//显示鼠标所指物体tag方法

在update里面调用一下这个方法就可以实现了(直接写进去也不是不行主要是想好看一点免得到时候做功能注释得乱七八糟的)

你可能感兴趣的:(unity)