[Unity][射线检测]检测两个物体之间是否有其他物体阻挡
1.用Physics.Raycast进行射线检测
物体必须有Collider碰撞组件。
//定义一条射线,起点为GO1的物体坐标,终点为GO2的物体坐标
Ray ray = new Ray(GO1.transform.position, GO2.transform.position - GO1.transform.position);//定义一个光线投射碰撞 RaycastHit hit; //发射射线长度为100 Physics.Raycast(ray, out hit, 100); if (hit.transform != null){Debug.Log("blocked:" + hit.transform.name);}//在Scene中生成这条射线,起点为射线的起点,终点为射线与物体的碰撞点
Debug.DrawLine(GO1.transform.position,GO2.transforme.position);
如果射线是以GO2的物体的坐标,终点为GO1的物体的坐标,就得写成以下的方式。
Ray ray = new Ray(GO2.transform.position,GO1.transform.position - GO2.transform.position);
2.用Physics.Linecast进行射线检测
int layA = LayerMask.NameToLayer("Character");LayerMask bricksLayer = 1 << LayerMask.NameToLayer("Character");//LayerMask bricksLayer = 1 << layA;RaycastHit hit;if (Physics.Linecast(GO1.transform.position, GO2.transform.position, out hit, (1 << layA))){Debug.Log("blocked:"+hit.transform.name);}Debug.DrawLine(transform.parent.gameObject.transform.position, _player.transform.position);
下面这句话的意思是 射线遮罩,只对物体 的 Layer 是“Character”的物体,进行检测。
Physics.Linecast(GO1.transform.position, GO2.transform.position, out hit, (1 << layA)
总结:以上2种方法都能够 对2个物体之间 进行射线检测,并返回 被阻挡的物体。
参考文章:
1.
How to check if the collision line between two objects is free?
2.
Physics.Linecast
3.
Unity检测目标是不是在攻击范围内
4.
unity射线检测忽略某层的方法
5.
[Unity][射线检测]检测两个物体之间是否有其他物体阻挡相关推荐
- unity 射线检测 碰撞点不准确的原因分析
unity 射线检测 碰撞点不准确的原因分析 射线检测的时候,出现了碰撞的那个点位置总是上下不准确,但屏幕中心位置不受影响,越远离中心,越偏移. 无论是用鼠标,还是ui上的坐标都不准确. 下面是代码 ...
- Unity射线检测的用法总结
RayCast 射线检测 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- MIDL2020赛事object-CXR(胸部X射线异物检测大赛)
MIDL2020官方赛事object-CXR(胸部X射线异物检测大赛)正式启动 01 PART MIDL2020介绍: MIDL全称Medical Image with Deep Learning,专 ...
- unity+opencv实时检测人脸及眼睛区域检测
这是最近做的一个工作,由于要调用电脑摄像头实时检测人眼主要是检测闭眼睁眼 ** 1.工具 ** 1.1unity(作者用的是2020.3.25 大部分版本都ok 1.2opencv for unity ...
- CVPR 2020夜间行人检测挑战赛两冠一亚:DeepBlueAI团队获胜方案解读
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:机器之心 近日,由 CVPR 2020 Workshop 举办的 NightOwl ...
- CVPR2020夜间行人检测挑战赛两冠一亚:DeepBlueAI获胜方案解读
2020-06-22 11:24:27 机器之心专栏 作者:罗志鹏(深兰北京AI研发中心) 来自深兰科技北京 AI 研发中心的 DeepBlueAI 团队在 CVPR 2020 夜间行人检测挑战赛中斩 ...
- unity鼠标滑动检测
Unity鼠标滑动检测 private Vector2 first = Vector2.zero; private Vector2 second = Vector2.zero; void Update ...
- Unity官方性能检测工具UPR使用心得
Unity官方性能检测工具UPR使用心得 UPR是Unity官方推出的免费性能检测工具,近来功能较之前版本完善了许多,经笔者在正式项目中试用,与UWA的免费性能检测工具GPM作对比,发现UPR相较GP ...
- [Unity]限制两个物体之间的距离
//限制两个物体之间的距离 if (Vector3.Distance(B.position, A.position) > maxDistance) {//获得两个物体之间的单位向量Vector3 ...
最新文章
- libcudart.so.10.0: cannot open shared object file: No such file or directory
- js在上传图片前判断大小
- how to fix error 25007 : loadlibraryshim()
- 【一天一个shell命令】【cut】
- 操作系统 哈工大 李治军
- linux c之STDIN_FILENO的作用及与stdin的区别
- 下列类型不是mysql_下列( )类型不是MySQL中常用的的数据类型。
- 数字货币交易所数据安全随笔
- C语言以二进制形式读入文件
- 九阴真经 服务器列表文件,《九阴真经》部分服务器互通升级公告
- html 文本框 p,Javascript实现HTML表单form多个HttpPost请求
- Docker容器解决没有Vim命令
- 详谈概率图模型(PGM)
- MuMu模拟器安装面具magisk24.1教程
- python小欢喜(八)俄罗斯方块 (3) 组合对象的旋转
- 有序回归: Ordinal Regression的理解
- AI大事件 | 谷歌的计算引擎鸟枪换炮用上了更快的GPU,基于Python的亚马逊AWS深度学习AMI
- 对小米路由器提出严正批评,2.4G下,40MHz自动变20MHz
- SystemUI 状态栏增加移动数据开启图标
- linux 查看gz文件,【shell 脚本】查看*.gz 文件的内容
热门文章
- 如何在vim创建脚本内添加固定的抬头信息?
- Unity 游戏开始UI设计
- python中try语句的用法和作用_python基础知识三——try与except处理异常语句
- 【codeforces 731D】80-th Level Archeology
- JAVA程序员装机必备软件攻略
- 操作无法完成.键入的打印机名不正确,或者指定的打印机没有连接到服务器上 !...
- 修改联通服务器密码怎么修改,联通宽带修改wifi密码怎么改?
- 高通camx debug log 控制 及 UseCase pipeline debug(四)
- 基于S2SH+ExtJS4+Oracle9i技术实战开发电子商业汇票系统(银行内系统通讯)
- cadence原理图和PCB文件不能双击直接打开解决办法