允许点击或光线投射到某些项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了允许点击或光线投射到某些项目相关的知识,希望对你有一定的参考价值。

这有点难以解释,所以我尝试使用下面的图像尽我所能。

enter image description here

所以情况就是这样:玩家从库存中选择了钻取,并且弹出了“确认菜单”(A,S&D)。现在玩家必须选择其中一个动作(A =接受位置,S =将物品放回库存,D =保持移动物体周围)。在玩家选择其中一个动作之前,他不应该做其他事情。

问题是,如果玩家点击右上角的小地图,则会检测到按钮点击并打开菜单。如果玩家点击汽车(用Raycast检测到),玩家就会进入。如果玩家拖动操纵杆,他开始四处走动(使用Unity的操纵杆脚本)。这些都不应该被允许。

问题是:Unity是否有某种方法可以“防止对任何其他对象进行任何类型的点击检测,但这些”或“如果鼠标未在此对象上,则点击时不执行任何操作”?可能没有这样的东西,那么什么是最好的解决方法?

因为这些“点击做某事”动作是从各种风格(按钮和数十种不同脚本中的光线投射)的各个地方触发的,所以我试图通过在任何地方设置布尔值来避免这样做。开放的想法非常受欢迎。

答案

一个简单的解决方法是使用GUI Depth(https://docs.unity3d.com/ScriptReference/GUI-depth.html)。

如果“确认菜单”guiDepth位于顶部且所有其他GUI位于下方,则可以在覆盖整个屏幕之间添加另一个GUI;然后,Raycast会返回第一个元素,如果是中间的GUI,则什么都不做。

以上是关于允许点击或光线投射到某些项目的主要内容,如果未能解决你的问题,请参考以下文章

关于 oculus quest 光线投射

光线追踪、光线投射、光线行进和路径追踪有啥区别?

Three.js 从鼠标位置投射光线

THREE.js 对单个 > 500k 多边形(面)对象的光线投射非常慢,与地球的线相交

在three.js中使用正交相机进行不精确的光线投射

用于游戏开发和其他目的的光线投射教程