마우스 클릭 이벤트로 JSON 객체를 잡으려고합니다. 광선을 사용하여 물체를 식별하지만, 어떤 이유로 물체가 항상 식별되는 것은 아닙니다. 나는 내가 카메라를 움직인다는 사실과 관련이 있다고 생각한다. 왜냐하면 내가 물체 근처를 클릭하면 나는 식별되기 때문이다.ray가 JSON에 도달하지 않습니다.
카메라 이동에 따라 광선을 올바르게 설정하는 방법을 이해할 수 있습니까? 여기
코드입니다 :이 마우스 다운 이벤트 *의 일부가document.addEventListener("mousemove", onDocumentMouseMove, false);
document.addEventListener("mouseup", onDocumentMouseUp, false);
document.addEventListener("mouseout", onDocumentMouseOut, false);
mouseXOnMouseDown = event.clientX - windowHalfX;
targetRotationOnMouseDown = targetRotation;
var ray, intersections;
_vector.set((event.clientX/window.innerWidth) * 2 - 1, -(event.clientY/window.innerHeight) * 2 + 1, 0);
projector.unprojectVector(_vector, camera);
ray = new THREE.Ray(camera.position, _vector.subSelf(camera.position).normalize());
intersections = ray.intersectObjects(furniture);
if (intersections.length > 0) {
selected_block = intersections[0].object;
_vector.set(0, 0, 0);
selected_block.setAngularFactor(_vector);
selected_block.setAngularVelocity(_vector);
selected_block.setLinearFactor(_vector);
selected_block.setLinearVelocity(_vector);
mouse_position.copy(intersections[0].point);
block_offset.sub(selected_block.position, mouse_position);
intersect_plane.position.y = mouse_position.y;
}
}
이 카메라 이동 *의 일부입니다
입니다
camera.position.x = (Math.cos(timer) * 10);
camera.position.z = (Math.sin(timer) * 10);
camera.lookAt(scene.position);
그것은 작동합니다! 고마워요 !! :) – Vardit
다행히 도울 수있어^_ ^ –