Getting that Hand-Held Look on Cameras + Two Cinematic Challenges
Unless your camera person is a machine attached to a wall, you just might want to add some subtle shake to your camera to get a more real feel. Having some mild shake is a great way to add a bit of that human feel to your cinematic shots.
Cinemachine comes perfectly equipped with a noise option for just such an occasion! Just head to the inspector with your desired virtual camera selected, and navigate down to the Noise function. Change the default none value to Basic Multi Channel Perlin. The error is telling me that I need to choose a Noise Profile.
The Noise Profile dropdown has a collection of ready to go Profiles for your camera shake. I choose the Handheld Normal Mild option.
There is a Pivot Offset option for your shake, as well as Amplitude Gain and Frequency Gain. The Amplitude dictates how hard the camera shakes while the Frequency is how fast. Now get shaking!
Challenge 1: Create a 3rd person follow camera that acts as the main camera, as well as an Orbital camera to act as the secondary camera. Have the Orbital camera take control while the right mouse button is held down.
There are two variables for the cinemachine cams, and the using Cinemachine Namespace is needed up top. I have a high level int value to set the main camera priority to, as well as a lower level default for the Orbital Camera.
When the Player holds down the right mouse button, the Orbital camera gets assigned the highest Priority level, and becomes the main camera. When the right mouse button is released, the Orbital camera resets back to it’s original Priority level (9), which makes the Follow (3rd person cam), the main camera with a preset Priority of 10.
Here I have a 3rd person cinemachine camera, which changes to the Orbital camera with a button press, so the player can look around the game scene.
Challenge 2: Set up virtual cameras with Body types of 3rd Person, Overhead Static, Dolly Track and LookAt. Have triggers in the scene to change cameras when the player passes over them.
The SetDefaultPriority method and default priority variable work together, so that all referenced virtual cameras have their Priority level set to 10 when the method is called. The SetMainPriority method takes in an int value when called, and uses it to assign the selected camera to the main Priority level.
The four Scene cameras are assigned to the vCams array variable in the inspector.
Another script is created and attached to each trigger in the scene. In the OnTriggerEnter method, when the player walks through the trigger, it will call the Change Camera script and ping the SetDefaultPriority method. It will then call the SetMainPriority method and pass in it’s own specific index value.
Each trigger with the script attached is assigned a different Cam index value to reference a specific camera in the array.
The player starts with a 3rd person camera, which changes to an overhead shot after passing through the first trigger.
The overhead shot moves down to a tracked dolly after passing through the second trigger.
The tracked dolly camera transitions into a stationary follow camera after the third trigger is hit.
The stationary follow camera moves back into a 3rd person camera after the final trigger is hit.
Thanks for reading along with me as I complete these challenges and shake things up!