Water your player can actually touch.
Drop a crate, a coin or a duck into it and the surface opens where it lands. The ripple runs out along the waterline, the foam rides the crest, and the object settles and bobs on Unity's own Buoyancy Effector 2D. Nothing about it is a canned animation.
It is built for the side view, so the water fills the sprite up to a Level line, everything above that line is transparent, and the body underneath is posterized into flat cartoon bands. Drop the component on a plain square and you have a pool. Stretch that square into a lake, a canal or a narrow well and the waves, foam, bubbles and dashes stay the same size, because every shape is measured in world units rather than in the sprite's UV.
Sixteen looks ship as modes on one dropdown, in five families. Surface for calm water and flow. Waves for sine, voronoi, breaking crests and layered ocean. Bodies for tiled pools, waterlines and depth. Foam for shorelines and edges. Ripples for interaction and splash droplets. Every mode arrives pre tuned, and switching modes loads that mode's own values, with Undo.
Everything is customizable from the Inspector or from code: wave height and speed, how many waves cross the sprite, how high the water sits, how dark it reads with depth, how thick the foam grows, four colors including an HDR highlight, opacity so what is behind the water shows through, and how hard a ripple hits. The custom Inspector dims the settings a mode does not use, so you are never guessing which slider matters.
It runs on URP with the 2D Renderer, unlit or Lit 2D from a dropdown, and it samples nothing outside its own sprite. No grab pass, no scene texture, no camera setup to get right. Per sprite values go through a MaterialPropertyBlock, so a hundred puddles with a hundred different looks still share one material.
Three demo scenes are included: a grid of all sixteen modes unlit, the same grid on the Lit 2D shader, and an interaction scene with a duck you can drop into the water by clicking. An offline manual with a full script reference is in the package.