import * as THREE from 'three' const scene = new THREE.Scene() scene.background = new THREE.Color('#111111') const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000) camera.position.z = 5 const renderer = new THREE.WebGLRenderer() renderer.setSize(window.innerWidth, window.innerHeight) document.body.appendChild(renderer.domElement) const geometry = new THREE.BoxGeometry(2, 2, 2) const material = new THREE.MeshBasicMaterial({ color: 'lime' }) const cube = new THREE.Mesh(geometry, material) scene.add(cube) let isBlue = false const raycaster = new THREE.Raycaster() const mouse = new THREE.Vector2() window.addEventListener('mousedown', (e) => { mouse.x = (e.clientX / window.innerWidth) * 2 - 1 mouse.y = -(e.clientY / window.innerHeight) * 2 + 1 raycaster.setFromCamera(mouse, camera) const hits = raycaster.intersectObject(cube) if (hits.length > 0) { isBlue = !isBlue cube.material.color.set(isBlue ? 'blue' : 'lime') } }) window.addEventListener('resize', () => { camera.aspect = window.innerWidth / window.innerHeight camera.updateProjectionMatrix() renderer.setSize(window.innerWidth, window.innerHeight) }) function animate() { requestAnimationFrame(animate) cube.rotation.y += 0.01 renderer.render(scene, camera) } animate()