Unity射线检测的避坑指南

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
简介: Unity射线检测的避坑指南

前言:每日记录自己学习unity的心得和体会,小弟才疏学浅,如有错误的地方,欢迎大佬们指正,感谢~



射线检测的坑

有时侯我们想在射线检测的时候忽略掉某些物体的碰撞,从而达到检测物体背后的物体的碰撞,这是个时候我们使用layerMask

layerMask参数使用按位与<<设置的一些总结:

 1 << 10 打开第10的层。

~(1 << 10) 打开除了第10之外的层。

~(1 << 0) 打开所有的层。

(1 << 10) | (1 << 8) 打开第10和第8的层。

Debug.DrawLine(ray.origin, hitInfoPoint.point, Color.red);// 加上这句可以在Scene视窗看到射线

先写一下射线的应用

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Global;

publicclass ShiYan : MonoBehaviour {

   Ray ray;

   RaycastHit hitInfoPoint;

 

   void Update () {

     

       if (Input .GetMouseButtonUp (0))

       {

           ray = Camera.main.ScreenPointToRay(Input.mousePosition);

           LayerMask layer = 1 << 10;     //层级 就是打开第10层

           //下面如果不判断,并且你的场景中没有其他的碰撞体,就会报错,为了防止报错加个判断if

           if (Physics.Raycast(ray, out hitInfoPoint, 100f, layer))

           {

               Debug.Log(hitInfoPoint.transform.name);

           }

                                                         

       }    

   }

}

最大的坑就是如果你设置了层级,射线里面不设置射线的长度(maxDistance),那么就会出现射线设置的层级不起作用

切记设置了层级,一定设置长度

 

当父子物体都有碰撞器时,如需检测子物体,需将父物体层级关闭,或只打开子物体层级

但如需获取子物体信息时,需用hit.collider.name(名字),

如用hit.transform.name时,返回的是父物体名字

相关文章
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
159 6
|
3月前
|
图形学
小功能⭐️Unity解决物体移动速度过快不能检测到碰撞
小功能⭐️Unity解决物体移动速度过快不能检测到碰撞
|
6月前
|
C# 图形学
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
111 0
|
11月前
|
图形学
Unity小游戏——武士和怪物的碰撞检测
Unity小游戏——武士和怪物的碰撞检测
|
11月前
|
数据可视化 图形学
Unity射线编程详解
Unity射线编程详解
|
图形学
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
395 0
|
图形学
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
428 1
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
|
图形学
Unity射线检测3d,2D,正交透视。
使用射线功能制作点击物体获取物体名字。可以做简单点击相应。 3D射线检测,Camera 在正交模式与透视模式皆可使用 void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.
1930 0