Unity中的射线检测

射线检测

射线:由一个起始点开始,向一个方向放出无限长的的线。

射线检测:当射线与我们想要检测的物体重合就会发出信号。

Ray:ray是Unity内置的射线类,存放传入起始点和起始方向,当做射线的起点和方向,

RaycastHit:Unity中通过RaycastHit结构体来存储射线检测到的碰撞体的信息。

RaycastHit[]:除了声明单个RaycastHit外,还可以设置RaycastHit[]数组,

Physcis.RaycastAll:可以获得所有的与射线交互的信息

LayerMask:LayerMask的形式是int,它表示的是你涂层的序号的二次方倍.

Physics.Raycast():Physics.Raycast()返回true,可以用它来表示射线是否与游戏对象发生交互.Physics.Raycast一共有16个重载方法,可以按需选择。

Physics2D.queriesStartInColliders=false:queries:询问,start:开始,incolliders:在碰撞体内。这样如果碰撞体是我们射线所在起点的内部时,我们不让它返回该碰撞体。

相机射线:Ray ray = viewCamera.ScreenPointToRay(Input.mousePosition);

显示射线:Debug.DrawRay();Debug.DrawLine();

射线检测的代码

Physics.Raycast(Vector3 origin,Vector3 direction,out RaycastHit hitinfo,float distance,int LayerMask);

//origin:射线的起始点,因为是位置坐标所以使用Vector3表示

//direction:射线的方向,因为是方向坐标所以使用Vector3表示

//hitinfo:一个结构体,可以储存碰撞体的所有信息。

//distance:射线检测的距离,虽然说射线的长度是无限长,但是可以设置它的检测距离,只有在这个距离内的物体才可以被检测到

//LayerMask:图层,虽然物体都处在一个3D世界中,但都有着图层之分。如果输入图层的序号就可以只检测这个图层的相应物体,而其它图层的物体即使被射线扫到了也没有任何卵用

Physics2D.Raycast(Vector2 origin,Vector2 direction,float distance,int LayerMask,float minDepth,float maxDepth);

//origin:射线的起始点,因为是位置坐标所以使用Vector2表示

//direction:射线的方向,因为是方向坐标所以使用Vector2表示

//distance:射线检测的距离,虽然说射线的长度是无限长,但是可以设置它的检测距离,只有在这个距离内的物体才可以被检测到

//LayerMask:图层,虽然物体都处在一个2D世界中,但都有着图层之分。如果输入图层的序号就可以“只”检测这个图层的相应物体,而其它图层的物体即使被射线扫到了也没有任何卵用

//minDepth,maxDepth:检测确定Z轴的范围内的物体。但是由于都是使用Sorting Layers来调整物体而不是Z轴坐标,所以不是很常用。只要知道就行,默认是无穷

参考

Karmotrine.简析Unity射线检测的概念与应用(知乎)

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值