【Unity每日一记】Physics.Raycast 相关_Unity中的“X光射线”


👨‍💻个人主页 :@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:unity每日一记

⭐🅰️推荐文章⭐


⭐【软件设计师高频考点暴击】

⭐【Unityc#专题篇】之c#系统化大礼包】

⭐【unity数据持久化】数据管理类_PlayerPrfs

⭐【unity本站最全系列】unity常用API大全一篇文章足以


⭐⭐


文章目录




🎶(O)Ray射线检测


  • 特点

    只需要判断一条线和物体的碰撞情况

    可以在指定点发射一个指定方向的射线

    判断该射线与哪些碰撞器相交,得到对应对象

    瞬时

  • 应用场景

    1.鼠标选择场景上一物体

    2.FPS射击游戏(无弹道-不产生实际的子弹对象进行移动)等

射线声明


API

  • Ray X = new Ray(Vector3.right, Vector3.forward);
参数一 参数二
起点 方向
X.origin X.direction
  • Ray XX = Camera.main.ScreenPointToRay(Input.mousePosition);
    屏幕视口坐标转成射线------鼠标点击的地方变成射线

Physics.Raycast 普通射线


  • Physics.Raycast 无法检测碰到了谁,只会检测碰到了没有

最多有16个重载

Physics.Raycast常用参数 作用
参数一 射线
参数二 检测的最大距离 超出这个距离不检测
参数三 检测指定层级(不填检测所有层)
参数四 是否忽略触发器 UseGlobal-使用全局设置 Collide-检测触发器 Ignore-忽略触发器 不填使用UseGlobal
返回值 bool 当碰撞到对象时 返回 true 没有 返回false
csharp 复制代码
//第一种写法
Physics.Raycast(XX, 1000, 
1 << LayerMask.NameToLayer("层级名字"), 
QueryTriggerInteraction.UseGlobal   )

//第二种写法
Physics.Raycast(Vector3.right, Vector3.forward,  
1 << LayerMask.NameToLayer("层级名字"), 
QueryTriggerInteraction.UseGlobal   )

RaycastHit 物体信息类

  • RaycastHit 物体信息类------得到相交的单个物体物理信息
RaycastHit 在Physics.Raycast的应用 作用
参数一 射线
参数二 out RaycastHit 为什么是out ?RaycastHit是结构体 是值类型 out加上去就变成了引用类型,而RaycastHit没有复制所以不用ref
参数三 检测的最大距离 超出这个距离不检测
参数四 检测指定层级(不填检测所有层)
参数五 是否忽略触发器 UseGlobal-使用全局设置 Collide-检测触发器 Ignore-忽略触发器 不填使用UseGlobal
返回值 bool 当碰撞到对象时 返回 true 没有 返回false
csharp 复制代码
//写法一
      RaycastHit YY;   
     if( Physics.Raycast(XX, out YY, 1000, 
     
     1<<LayerMask.NameToLayer("层级名字"), 
     
     QueryTriggerInteraction.UseGlobal) )
     
//写法二
if( Physics.Raycast(Vector3.right, Vector3.forward, out YY, 1000,
 
     1<<LayerMask.NameToLayer("层级名字"), 
     
     QueryTriggerInteraction.UseGlobal) )
  • 碰撞到物体的名字 YY.collider.gameObject.name;
  • 碰撞到的点 YY.point
  • 法线信息 YY.normal
  • 碰撞到对象的位置 YY.transform.position
  • 碰撞到对象 离自己的距离 YY.distance等等

Physics.RaycastAll 得到多个物体信息


  • RaycastHit\[\] XX= Physics.RaycastAll------得到相交的多个物体物理信息


特点: 先碰到的在数组的后面


Physics.RaycastNonAlloc 返回的碰撞的数量


  • Physics.RaycastNonAlloc------返回的碰撞的数量 通过out得到数据
csharp 复制代码
  if((r3, XX, 1000, 1 << LayerMask.NameToLayer("Monster"), 
  QueryTriggerInteraction.UseGlobal) > 0 )
 
        {
        }

⭐🅰️系统路线学习点击跳转⭐


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

⭐ 【Unityc#专题篇】---进阶章题单实践练习

⭐【Unityc#专题篇】---基础章题单实践练习

⭐ 【Unityc#专题篇】---核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、



相关推荐
辻弋2013 天前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
Martina_03214 天前
AI生成3D场景导入 Unity/Unreal 后,NPC 总串层?用6步检查导航高度与跨层连接
人工智能·游戏·数学建模·3d·unity·自然语言处理·aigc
小贺儿开发4 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
WarPigs6 天前
Unity对象不应该使用null传播的问题
unity
每日出拳老爷子7 天前
【VR】【Unity】抓走转放系列21|一天搭完门和抽屉工具槽:小场景按这个次序拼装
unity·vr·驱动·排错·snap zone
淡海水8 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
小贺儿开发8 天前
Unity 文物新生 会讲故事的文物展墙
人工智能·科技·unity·ai·视频·互动·演示
淡海水8 天前
02-03-原理篇-大对象堆
unity·c#·游戏引擎·.net·gc
WarPigs9 天前
Unity在Create菜单添加创建自定义脚本模板选项
unity
郝学胜-神的一滴9 天前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建