This is a system I made to add screen shake to certain events in your game so the player gets more visual feedback for what there doing.
Software - Unity, C#
Team size - 1 person
The screen shake manager is mainly used to store settings and add different presets with the settings: Name, Intensity, Frequency and Duration. These presets are created by having a struct with all the settings inside a dictionary which get put into a array to show it in the inspector.
With these settings it can give the right values to the CameraShaker to actualy let the camera/screen shake.
The screen shake manager itself is a singleton so its easy for the screenshakeMediator to comunicate to the manager.
The screen shake mediator is a script or object which you can put on a game object like the player or enemy. It is used to call to the screen shake manager through a unity event like when the enemy self destructs. You can call the name of the setting in the unity event.
The camera shaker is a script thats on the camera and it makes use of the cinemachine virtual cam and its perlinNoiseChannels. With the use of these noise channels you can easily set the amplitude and frequency of the noise. And so you can also turn it off again after a duration.