【发布时间】:2023-03-28 07:20:01
【问题描述】:
看起来“raycaster.intersectObjects”没有反应(使用 Three.js r54)。从代码中提取的(带有重要部分)如下:
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.z = 75;
scene = new THREE.Scene();
document.addEventListener( 'mousedown', onDocumentMouseDown, false );
var raycaster = new THREE.Raycaster();
var mouseVector = new THREE.Vector2();
function onDocumentMouseDown( e ) {
e.preventDefault();
mouseVector.x = ( e.clientX / window.innerWidth ) * 2 - 1;
mouseVector.y = - ( e.clientY / window.innerHeight ) * 2 + 1;
var intersects = raycaster.intersectObjects(scene.children, true);
console.log(intersects);
if (intersects.length>0){
intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );
}
}
function render() {
requestAnimationFrame(render);
mesh.rotation.y += 0.005;
renderer.render(scene, camera);
}
我在代码里面放了“console.log”来调试问题,发现它在控制台中输出了空数组。在这之间,我得到了空数组的输出,而不取决于我是点击了某个对象还是只点击了背景。
【问题讨论】:
-
这是我的 jsfiddle:jsfiddle.net/dariukas/zpo7qwt1
-
如果有困难,请看这里stackoverflow.com/a/28679672/4131583
标签: javascript 3d three.js