몇 가지 이유로 아래 코드에서 객체를 단순히 클릭하면 "intersects"변수에 onDocumentMouseDown 이벤트 핸들러에 항목이 없습니다 . 클릭 한 객체를 탐지하려면 클릭 한 항목을 클릭하기 전에 마우스를 클릭하고 약간 드래그해야합니다. 그게 중요하다면 나는 또한 trackballcontrols를 사용하고있다. 큐브에 클릭 jsfiddle 예에서 http://jsfiddle.net/marktreece/xvQ3f/클릭하고 약간 드래그하지 않으면 Three.js를 사용하는 mousedown 이벤트가 작동하지 않습니다.
예상대로 색이 변경되지 않습니다주의 사항 : 나는 여기에 jsfiddle 예를 들어 있습니다. 이제 큐브를 클릭하고 마우스 버튼을 놓기 전에 커서를 약간 움직이면 색상이 바뀝니다. 객체를 단순히 클릭하면 충분할 수 있도록 어떻게 만들 수 있습니까? 나는 당신의 예를 들어 raycasting에서 볼 수있는에서
function onDocumentMouseDown(event) {
event.preventDefault();
var vector = new THREE.Vector3((event.clientX/window.innerWidth) * 2 - 1, - (event.clientY/window.innerHeight) * 2 + 1, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(scene.children, true);
if (intersects.length > 0) {
intersects[ 0 ].object.material.color.setHex(Math.random() * 0xffffff);
}
}