document.addEventListener('mousemove', (event) => {
const mouse = new THREE.Vector2();
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
const raycaster = new THREE.Raycaster();
raycaster.setFromCamera(mouse, camera);
raycaster.params.Mesh.threshold = 1
const intersects = raycaster.intersectObjects(particles);
if (intersects.length > 0) {
const nearestParticle = intersects[0].object;
console.log(nearestParticle);
const force = new THREE.Vector3().copy(nearestParticle.position).sub(cursor).normalize().multiplyScalar(0.01);
nearestParticle.position.add(force);
}
});
function onMouseMove( event )
{
mouse.x = 2*event.clientX/innerWidth - 1;
mouse.y = -2*event.clientY/innerHeight + 1;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObject( background );
if( intersects.length > 0 )
{
var cursor = intersects[0].point;
for( var particle of particles )
{
v.subVectors( particle.position, cursor );
var dist = Math.max(v.lengthSq( ),0.01);
if( dist < 3 )
{
particle.position.addScaledVector( v, Math.min(0.1/dist,1) );
particle.position.z = 0;
}
}
renderer.render( scene, camera );
}
}
1 Like