unity – How can I implement a fish character with a “chargeable tail” mechanic

I’m trying to replicate the fish physics from Fish Volleyball.
If you want you can try demo of the game or watch video preview
The unique part is that the fish doesn’t jump normally — instead, when it touches a surface, its tail compresses like a spring under the fish’s weight. The fish only bounces if the player presses the jump button (e.g., Space), which should release that stored energy and push the fish away from the surface.
So the desired behavior is:
- On collision with a surface, the tail visually compresses, storing
“spring energy.” - The bounce does not happen automatically — it only triggers when the
jump button is pressed. - The resulting movement should feel floaty (weak gravity, noticeable
drag), but the tail bounce should be responsive and controlled.
What I tried:
- I experimented with SpringJoint to simulate the compression and
release. - I also attempted a custom implementation, manually applying forces
when grounded. - Created something similar with Godot engine but was not able to push
the ball with my character
With my limited Unity experience, I’m not sure which built-in components would be best for this, or if it’s something that should be handled through custom scripts
Question:
What would be a good way to implement this “chargeable tail bounce” mechanic in Unity? Should I keep working with joints, or is there a better approach (custom force logic, animation + physics mix, etc.)?
Any advice, examples, or even just pointing me toward the right Unity components would be really appreciated.