Project 25: Floating Interactive Spheres
3D Engineer
Step 1 of 2
Project
Review: Interaction & Animation
Combine hover interaction with a subtle floating animation on one bubble.
🎯 Your Task
Please add the exact code shown in the light gray box below to your editor.Do not delete your previous code, just insert these new lines in the correct place!
function ChatBubble() {
const [hovered, setHovered] = useState(false);
const ref = useRef();
useFrame((state) => {
ref.current.position.y = Math.sin(state.clock.elapsedTime * 2) * 0.1;
});
return (
<mesh
ref={ref}
onPointerOver={() => setHovered(true)}
onPointerOut={() => setHovered(false)}
>
<sphereGeometry args={[0.6, 32, 32]} />
<meshStandardMaterial color={hovered ? 'gold' : 'skyblue'} />
</mesh>
);
}
export default function Scene() {
return (
<Canvas>
<ambientLight intensity={0.7} />
<ChatBubble />
</Canvas>
);
}