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


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

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

👨‍💻 本文由 秩沅 原创

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

🅰️推荐文章


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

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

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

【unity本站最全系列】unity常用API大全一篇文章足以
【Unity每日一记】Physics.Raycast 相关_Unity中的“X光射线”-LMLPHP






🎶()Ray射线检测


  • 特点
    只需要判断一条线和物体的碰撞情况
    可以在指定点发射一个指定方向的射线
    判断该射线与哪些碰撞器相交,得到对应对象
    瞬时

  • 应用场景
    1.鼠标选择场景上一物体
    2.FPS射击游戏(无弹道-不产生实际的子弹对象进行移动)等

射线声明



  • 屏幕视口坐标转成射线——鼠标点击的地方变成射线

Physics.Raycast 普通射线


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

最多有16个重载

//第一种写法
Physics.Raycast(XX, 1000, 
1 << LayerMask.NameToLayer("层级名字"), 
QueryTriggerInteraction.UseGlobal   )

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

RaycastHit 物体信息类

  • ——得到相交的单个物体物理信息
    【Unity每日一记】Physics.Raycast 相关_Unity中的“X光射线”-LMLPHP
//写法一
      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 得到多个物体信息


  • ——得到相交的多个物体物理信息

【Unity每日一记】Physics.Raycast 相关_Unity中的“X光射线”-LMLPHP
特点: 先碰到的在数组的后面


Physics.RaycastNonAlloc 返回的碰撞的数量


  • ——返回的碰撞的数量 通过out得到数据
  if((r3, XX, 1000, 1 << LayerMask.NameToLayer("Monster"), 
  QueryTriggerInteraction.UseGlobal) > 0 )
 
        {
        }

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


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

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

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

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

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

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

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


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


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


08-19 20:50