Unity射线检测相关笔记

本文介绍了在Unity3D中创建射线的两种方式,包括基于坐标和方向以及通过摄像机获取鼠标位置。同时,详细讲解了使用Physics.Raycast进行碰撞检测的方法,如何获取碰撞物信息如名称、碰撞点、法线等,并强调了在调用时需注意的参数如检测距离和层级设置。
摘要由CSDN通过智能技术生成

创建一条射线,通常有两种方式

1、用坐标和方向创建

2、用摄像机获得鼠标位置创建

Ray r = new Ray(Vector3.right, Vector3.forward);
        //Ray中的参数
        print(r.origin);
        print(r.direction);

        //摄像机发射的射线
        Ray r2 = Camera.main.ScreenPointToRay(Input.mousePosition);

如何检测碰撞到的物体——使用Physiscs.RayCast方法,参数传入一个射线,检测距离,检测层级,是否忽略碰撞器。但是这种方法只能得到碰撞,无法得到碰撞的物体信息。

使用Physiscs.Raycast的另一个重载可以得到碰撞物的信息,第一个参数射线,第二个传入一个RayCastHit的对象进行存储,这个对象不需要实例化。第三个参数是检测距离。第四个是检测层级。第五个是是否忽略触发器。

注意***********

传入RayCastHit需要在前面写上out

传入层级的时候是用1<<LayerMask.NameToLayer("string")

RaycastHit hitInfo;
        if (Physics.Raycast(r3,out hitInfo,1000))
        {
            //碰撞器信息
            print(hitInfo.collider.gameObject.name);

            //碰撞点
            print(hitInfo.point);

            //法线信息
            print(hitInfo.normal);

            //碰撞到对象的位置信息
            print(hitInfo.transform.position);

            //碰撞对象的离自己的距离
            print(hitInfo.distance);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值