为了账号安全,请及时绑定邮箱和手机立即绑定

Raycaster 对象未定义 mouseover Three.js

Raycaster 对象未定义 mouseover Three.js

月关宝盒 2022-07-01 16:51:51
所以我用mousemove设置了raycaster来改变光标效果很好!但是,只有当鼠标悬停在模型上方或框本身上方时,它才会按预期工作,如果您将鼠标悬停在没有任何东西的空白处,它会中断并且发生未定义的错误......所以如果我将鼠标悬停在改变了光标到一个指针然后移开它但是鼠标然后悬停在它工作的框后面的模型上并且光标变为自动但是如果我在悬停在没有任何东西的框上后悬停到空白区域光标仍然是一个指针而不是改为自动function onDocumentMouseMove(event) {    event.preventDefault();    var mouse = new THREE.Vector2();    mouse.x = (event.clientX / window.innerWidth) * 2 - 1;    mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;    raycaster.setFromCamera(mouse, camera);    var intersects = raycaster.intersectObjects(scene.children, true);    if (intersects[0].object.name == 'MaBox') {        container.style.cursor = 'pointer';        console.log('Mouse is over')    } else {        container.style.cursor = 'auto';        console.log('Mouse is off')    }}错误:未捕获的类型错误:无法读取 HTMLDocument.onDocumentMouseMove 处未定义的属性“对象”有什么建议么?
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您需要检查数组是否intersects为空。否则,没有 index 的元素0。


像这样的东西:


    var intersects = raycaster.intersectObjects(scene.children, true);


    if (intersects.length > 0) { // check the array


        if (intersects[0].object.name == 'MaBox') {

            container.style.cursor = 'pointer';

            console.log('Mouse is over')

        } else {


            container.style.cursor = 'auto';

            console.log('Mouse is off')

        }

    }


查看完整回答
反对 回复 2022-07-01
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信