Built in Rive, this character mascot responds to hover, click, and cursor tracking, running on a layered state machine so it reads as alive in-browser, not just looping.
Breakdown
The Challenge
The hard part wasn't any single reaction; it was making hover, click, and continuous cursor tracking run at the same time without fighting each other. Three layers competing for one character will stutter or snap unless each one knows how to hand off cleanly to the next.
The Process
Idle as the base layer. A looping animation that never fully stops, so the character reads as alive even with zero input.
Cursor tracking as a continuous layer. Cursor position mapped to a blend input inside the state machine, so the gaze shifts smoothly instead of snapping between positions.
Hover and click as interrupt states. Built to take priority briefly, play the reaction, then hand control back to idle without a visible reset.
All three layers are synchronized in one state machine, so nothing overrides another layer or plays out of sync.
Behind the scenes
Inside Rive
State Machine
State Machine
State Machine
Like this project
Posted May 23, 2026
A character mascot that responds to hovers, clicks, and cursor tracking, running on Rive's state machine with layered animation states. Designed to feel alive.