要在Three.js中通过鼠标单击切换对象位置,您需要完成以下步骤:
以下是一个完整的示例代码,展示了如何通过鼠标单击在Three.js中切换立方体对象的位置:
// 1. 设置场景、相机和渲染器
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 2. 添加一个立方体对象
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
// 3. 为场景添加鼠标点击事件监听器
const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2();
function onMouseClick(event) {
// 将鼠标点击位置归一化为-1到1之间的值
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
// 更新射线与鼠标接触点
raycaster.setFromCamera(mouse, camera);
// 计算物体和射线的交点
const intersects = raycaster.intersectObject(cube);
if (intersects.length > 0) {
// 4. 检测鼠标点击位置并计算与对象的位置差异
const difference = intersects[0].point.clone().sub(cube.position);
// 5. 切换对象位置
cube.position.add(difference);
}
}
window.addEventListener('click', onMouseClick, false);
// 渲染场景
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
当您在浏览器中打开此代码时,您将看到一个绿色的立方体。点击立方体会使其根据鼠标点击位置切换位置。
领取专属 10元无门槛券
手把手带您无忧上云