Unity3d中的射线检测方法
来源:互联网 发布:寻龙诀 知乎 编辑:程序博客网 时间:2024/06/05 00:17
Ray
一般来讲常用的检测点击物体、是否穿过物体大多会用到发射射线来进行辅助测试,在U3D中射线Ray为只有起点和方向的结构体,例如从主摄像机发射一条射线到鼠标点击地点:Camera.main.ScreenPointToRay(实际是将点转为射线),当需要检测是否遇到物体时则需要RayCast方法进行测试。RayCast
用到RayCast的地方无非两种
1.Physics.RayCast()——作用于所有物体,检测是否遇到该物体2.Collider.RayCast()——检测Ray是否穿过该Collider
函数相关信息(Ray RayCastHit float)
两种函数很显然是返回bool类型,参数方面:既然是射线是否遇到物体,所以检测物体是必须的,即Ray参数,既然可用Ray参数亦可使用Ray的相关属性:起点(transform.postion)和方向(Vector3.down),这里射线亦可指定最大距离即可以加入一个float型的最大距离值,如果接触物体时很多时候我没是不是需要获取这个接触物的信息呢?因此引入RayCastHit的结构体用于记录相关信息,因为是结构体,所以需要借助Out字符来进行存储。RayCastHit
RayCastHit用于记录从RayCast函数中获取的信息,本身为Struct类型。相关信息
point: Vector3 碰撞位置的世界坐标normal: Vector3 碰撞的面在碰撞位置的法线
barycentricCoordinate: Vector3 碰撞位置的三角形重心坐标。 具体应用案例大家自己查文档吧,虽然这么说很不负责,但是我实在不知道这个有啥用。
distance:float 碰撞位置跟起始点的距离
triangleIndex:int 碰撞到的位置的三角多边形的号码,我也从来没用过这个,回头有空给大家实验下利用这个功能都能干吗。
textureCoord: Vector2 碰撞位置的uv坐标位置
textureCoord2: Vector2 碰撞位置的第二套uv坐标位置
collider:Collider 碰撞到的碰撞体
rigidbody: Rigidbody 碰撞到的物体的刚体
transform: Transform 碰撞到的物体的Transform节点
阅读全文
0 0
- Unity3d中的射线检测方法
- unity3D 射线碰撞检测
- Unity3D之射线检测
- Unity3d·射线·射线检测碰撞
- Unity3D检测(碰撞、射线)
- Unity3D检测(碰撞、射线)
- unity3d 2d 射线检测
- Unity3D Physics.Raycast 射线检测
- Unity3D射线检测控制转向
- unity3D 从摄像机发射射线,检测画线
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- Unity3D的射线检测Physics.Raycast
- [Unity3D]射线碰撞检测+LayerMask的使用
- Unity中的分层射线检测
- Unity3D中避免在点击UGUI的按钮时触发射线检测方法
- unity3d射线
- 算法进阶之回溯算法
- sql必知必会(第四版) 学习笔记一
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- Java实现图片压缩代码,图片大小转换
- 数理逻辑--课程概述
- Unity3d中的射线检测方法
- sql必知必会(第四版) 学习笔记二 视图
- 杭电ACM1000
- checkbox父选中所有和取消所有
- Django如何把数据库里的html格式输出到前端
- 知名互联网公司系统架构图[第1期]
- 第二次开博
- 4980:拯救行动
- 207. Course Schedule