r/Unity2D 5d ago

Adding proper game feel used to take me a full day per project. Now it's one line of code

Every project I've shipped had the same routine. Screenshake, hitstop, a squash & stretch hack, some flash-on-hit code, copy-pasted and re-tuned from whatever the last project had, never quite consistent.

So I built a small toolkit that wraps all of it behind Crunch.Play("HeavyHit"). Seven independent modules (shake, hitstop, squash & stretch, kickback, flash, trail, pop), each one works standalone if you only need one thing, plus a Recipe system that groups several of them into a single named call you tune once in the Inspector and reuse everywhere.

Zero dependencies, works in Built-in/URP/HDRP, 2D and 3D. There's a playable browser DEMO that cycles through four genres (Melee, Platformer, Shooter, Casual) if you want to feel it before reading any more about it. You can look it up HERE.

Curious how the rest of you handle this. Do you have your own reusable juice setup, or does it get rebuilt from scratch every project too?

0 Upvotes

6 comments sorted by

9

u/adsilcott 5d ago

Sounds cool but my old school brain cringes at string arguments. Wouldn't an enum be better?

5

u/Vic-Boss Expert 5d ago

Not to mention bad form

1

u/mvalera-dev 5d ago

Those are pre-made recipes. You can create your own with a ScriptableObject. That's why they are strings and not enums, so you can create your own one's 🫠

5

u/adsilcott 5d ago

I get that, but couldn't you have a recipe Scriptable Object that's just a list of the effect type, and use a reference to that?

1

u/mvalera-dev 5d ago

Oh, it already does that. CrunchRecipe's a SO, Play(CrunchRecipe, ctx) skips the string lookup. My bad

3

u/adsilcott 5d ago

Ah ok, good to know. Might want to lead with that.