Unity3D之射线检测
来源:互联网 发布:当程序员好吗 编辑:程序博客网 时间:2024/06/05 05:45
开发中我们经常遇到鼠标和三维物体交互的需求,要操作三维空间的物体,首先要选中这个物体,这时候就需要我们经常用到的射线检测。
一.单射线检测单个物体
代码使我们通用的射线检测代码,注释也已经标识上去了。
// Update is called once per framevoid Update () { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机沿着屏幕鼠标位置方向发射一条射线 RaycastHit hit; //射线检测返回的信息 if (Physics.Raycast(ray, out hit) { if (hit.collider.CompareTag("model")) { Debug.Log("选中Tag为model的物体"); } } }当然如果项目中有些物体因为需要发生物理碰撞必须要加上collider而又不想被射线检测到,这时候我们就可以使用layMasker来选择性射线检测。代码如下:
private float maxDistance = 1000f;//射线的最大长度 private LayerMask lm1=1 <<8; // 只检测到Layer层id为8的物体 private LayerMask lm2 = ~(1 << 8);//只检测不到Layer层id为8的物体 private LayerMask lm3 = (1 << 8) | (1 << 9);//只检测不到Layer层id为8和9的物体 // Update is called once per frame void Update () { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机沿着屏幕鼠标位置方向发射一条射线 RaycastHit hit; //射线检测返回的信息 if (Physics.Raycast(ray, out hit, 1000, lm1))//射线只能检测到layer层id为8的物体 { if (hit.collider.CompareTag("model")) { Debug.Log("选中Tag为model的物体"); } } }二.射线检测返回物体信息数组
获取射线检测到的所有物体。以数组的形式返回所有碰撞体信息。
private RaycastHit[] hits; private void Update() { Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机沿着屏幕鼠标位置方向发射一条射线 hits = Physics.RaycastAll(ray); //将所有射线检测到的物体以数组形式保存下来 Debug.Log("改射线碰撞检测到"+hits.Length+"个物体"); }以上代码是我觉得我们会经常使用到的射线代码,可是满足大部分项目需求。希望对你有帮助。
好记性不如烂笔头。我觉得即使我现在了解的滚瓜烂熟,只怕时间一长还是会忘了部分细节。所以在记录下来的同时还可以给大家一个帮助。一起进步吧!
阅读全文
0 0
- Unity3D之射线检测
- unity3D 射线碰撞检测
- Unity3d·射线·射线检测碰撞
- Unity3D检测(碰撞、射线)
- Unity3D检测(碰撞、射线)
- unity3d 2d 射线检测
- Unity3D Physics.Raycast 射线检测
- Unity3D射线检测控制转向
- Unity3d中的射线检测方法
- Unity之射线检测
- unity3D 从摄像机发射射线,检测画线
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- [Unity3D]射线碰撞检测+LayerMask的使用
- Unity3D的射线检测Physics.Raycast
- [Unity3D]射线碰撞检测+LayerMask的使用
- unity3d射线
- Unity3D射线
- leetcode--Merge k Sorted Lists
- Java中的异常和错误
- 向上取整 向下取整
- oracle 中YYYY-MM-DD HH24:MI:SS的使用 和 HH24:MM:SS
- H5面试——JS内置对象有哪些
- Unity3D之射线检测
- linux如何调整home和根分区大小的方法
- 关键字:static和final整理笔记
- [一天一项目]求分数形式的加减计算
- IntelliJ IDEA 添加 spring 库 以及 导入数据库
- leetcode--Swap Nodes in Pairs
- tensorflow的matrix_solve是个什么鸟。
- 数据结构实验之查找一:二叉排序树
- 获取数据库的所有表名