[0]射线穿透问题

射线在2.11版本中会穿透,在2.7的版本中不会穿透,而且在2.11版本中我点击一下,射线触发了两次甚至多次
已邀请:

Laya_Fred

赞同来自:

您好,您提交个可以复现的demo吧,方便进行问题定位。

132*****736

赞同来自:

this.point.x = Laya.MouseManager.instance.mouseX;
        this.point.y = Laya.MouseManager.instance.mouseY;
        //产生射线
        this.camera.viewportPointToRay(this.point,this.ray);
        //拿到射线碰撞的物体
        this.scene.physicsSimulation.rayCast(this.ray,this.outHitResult);
        //如果碰撞到物体
        if (this.outHitResult.succeeded)
        {
            console.log(this.outHitResult.collider.owner.name);
        }

132*****736

赞同来自:

点击老是多触发,明明点击了一下,却触发了4下

Laya_Fred

赞同来自:

您好,在您的demo里出现多次触发射线检测的原因是存在两次事件监听的执行,您在onPreLoadFinish内注册了鼠标按下、抬起的监听,但监听函数用的是脚本的生命周期函数,脚本的生命周期函数不需要注册监听。多次注册监听并且使用同一监听函数导致您的射线检测进行两次。
有两个方案可以进行修改:
方案一、弃用onPreLoadFinish内的监听注册,直接使用脚本的onMouseUp、onMouseDown函数实现射线检测。

Snipaste_2021-09-22_17-25-23.png

 
方案二、仍在onPreLoadFinish内进行监听注册,同时修改监听函数名,不要使用脚本的生命周期函数,同时将下面对应的脚本生命周期函数改为监听函数名。

Snipaste_2021-09-22_17-35-59.png

 
 
关于laya的脚本生命周期可以在这个文档内进行查看 脚本的生命周期 。

要回复问题请先

商务合作
商务合作