求指点3d射线碰撞和UI点击穿透的问题

//从屏幕空间生成射线
point.elements[0] = MouseManager.instance.mouseX;
point.elements[1] = MouseManager.instance.mouseY;
camera.viewportPointToRay(point, ray);
            
//射线检测获取所有检测碰撞到的物体
Physics.rayCastAll(ray, _outHitAllInfo, 500, 0);
 
这是通过屏幕当前鼠标位置获取一条射线碰撞集合,然后我又创建了一个Button,点击Button时发现射线也响应了,如何能让点击UI时不进行射线碰撞检测呢?谢谢
已邀请:

qian

赞同来自: suteam lyjkensou

给stage添加一个监听事件
给ui命一个名字 监听event.target.name

suteam

赞同来自: fevilbo

已解决,先监听舞台的MOUSE_DOWN事件,然后对其回调的evt.target进行检测即可知道是UI还是3d模型

qian

赞同来自:

layaFlash跟原生flash有些地方存在差异: 
    mouseEnableTip:如果项目中有显示对象不可点击,可检测它的mouseEable 是否为false.
原生Flash:如果将 mouseEnabled 设置为 false,实例不接收任何鼠标事件。显示列表上的该实例的任何子级都不会受到影响
。 H5: 如果将 mouseEnabled 设置为 false,实例不接收任何鼠标事件。且显示列表上的该实例的任何子级都不接收任何鼠标事件。
​   然后 看下你的显示对象是否具有鼠标点击区域

suteam

赞同来自:

呃,您没理解我的意思吧,我的意思是我如何能知道我现在点击的是UI,比如我点了按钮,那么我会记录一个布尔值,就不会去做射线碰撞,现在的效果是点击按钮,按钮和射线碰撞同时进行,我需要知道如果优先点击的是UI则不处理射线碰撞

suteam

赞同来自:

能回复一下嘛?着急啊,这是3d游戏最常用的功能了吧,还是我没找到么?

zwy363

赞同来自:

你就知足吧,我的连UI都加载不出来,也不报错。

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作