- Home /
How to make a simple "That's all folks!" effect in 2D?
At the end of some Loony Tunes cartoons, there's the "shrinking hole" effect where the screen transitions to black, except for a circular window that shrinks down to reveal only the character's face, or eye, or whatever.
I've tried creating a sprite that's all black, with a transparent circular hole cut out somewhere - then starting it off scaled so that the circular area is greater than the screen-size. On some trigger event, I then scale it down to 1-1.
This works, but it's clumsy, and the sprite-size I need to meet the starting and end-requirements is frankly, silly.
What would be neater would be an XOR circular layer I could place over the top of the whole screen, which would reveal all the content beneath it - then as I scale it down (to do the zoom), a smaller and smaller part of the screen would be visible.
A similar effect could be used to illuminate elements of a scene under 'spotlight' or 'torch' conditions.
So, the question is - how to create an object (or set of objects) that 'reveals' what's beneath it, while keeping any other objects masked out of the scene?
For some reason this has got stuck in the moderation queue even though it's been published (and answered) - @SaraCecilia ?
@tom kimber - I would use a stencil mask: https://alastaira.wordpress.com/2014/12/27/using-the-stencil-buffer-in-unity-free/
Answer by AlwaysSunny · Mar 02, 2015 at 09:21 PM
The "proper" way to do this is with an ImageEffect, which requires Unity Pro.
Without pro, I guess I'd want a rigged mesh. Create a flat toroid in your 3d modeling program of choice. Rig the "inner" circle of verticies to an armature. Make the "outer" circle of verts quite large in comparison. In unity, scale the bone you've tied to the inner circle to create the desired effect.
You can UV unwrap this mesh to create the concentric ring visual effect, but I'd personally recommend using your mesh topology to accomplish this also: If you make each concentric ring its own circle-of-faces on the mesh, you can colorize them without UV-unwrapping and bypass the "huge texture size" issue altogether.