所以我用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')
}
}
添加回答
举报
0/150
提交
取消