objects=[]; raycaster = new THREE.Raycaster(); mouse = new THREE.Vector2(); //監聽全局點擊事件,通過ray檢測選中哪一個object document.addEventListener("mousedown", (event) => { event.preventDefault(); this.mouse.x = (event.clientX / this.renderer.domElement.clientWidth) * 2 - 1; this.mouse.y = - (event.clientY / this.renderer.domElement.clientHeight) * 2 + 1; this.raycaster.setFromCamera(this.mouse, this.camera); this.scene.children.forEach(child => { if (child instanceof THREE.Mesh) {//根據需求判斷哪些加入objects,也可以在生成object的時候push進objects this.objects.push(child) } }) var intersects = this.raycaster.intersectObjects(this.objects); if (intersects.length > 0) { console.log(intersects[0].object) } }, false)
官方demo:https://threejs.org/examples/canvas_interactive_cubes.html