As you may know, when manipulating camera in game most people just tween the CFrame of the camera in order to animate it, this rig and its scripts allow you to use animations to manipulate a person camera! This also comes with a module script which adds easy camera shake and FOV tweening!
What makes this different to other cutscene plugins?
While other plugins use tweening between points to move the camera, this rig allows for the camera to be controlled through animations, allowing for much smoother and easier to implement cutscenes. These camera animations can also be imported from blender and other animating programs! (Blender rig is in the highlighted reply)
Setting up the rig:
At the bottom of this post I have linked the model which includes all files which come with this module, first of all you will need to place all of the scripts and whatnot into their corresponding areas:
HumanoidCameraRig - Workspace
CameraPlayer - StarterCharacterScripts
CameraEffectsModule - ReplicatedStorage
Using and animating with the rig:
Animating with the rig is pretty much the same as any other custom rig except you will have to use Moon Animator as it has a built in camera which allows you to attach it to a part while animating. If this is your first time using Moon Animator there are plenty of tutorials elsewhere and from here on out I will assume you have decent knowledge of the plugin.
What you need to do is import the camera rig, add the a camera through the topbar, click the wrench icon for the camera in the new camera you just inserted and tick AttachToPart.
Now finally clicking on the new AttachToPart row and pressing = will add a new keyframe. Click the keyframe, press 7 and at the top there will be a “Value” option. Click it and set the value to the CamPart and press ok, now your camera is attached to the part when you play the animation!
Once you are done animating export the animation to get the keyframe sequence which is able to be uploaded to roblox as an animation.
Now that you have your animation and the rig setup you’re ready to implement it into game! To attach the camera to the rig you will need to input this into your specified Server Script:
game.ReplicatedStorage.CameraEffectsModule.FireCamFocus:FireClient(SpecifiedPlayer,workspace.HumanoidCameraRig.Humanoid)
To set it back to normal you will do:
game.ReplicatedStorage.CameraEffectsModule.FireCamFocus:FireClient(SpecifiedPlayer,SpecifiedPlayer.Character.Humanoid)
Now the camera will be locked to the rig and you can play the animation just like any other animation.
Using the Camera Effects Module:
You can fire any part to be the focus, just note that the Camera Shake module does NOT work when the Camera Subject is not a humanoid.
This module should only be written to locally, trying to use it server side will cause errors.
Using the Camera Shake on Server:
-- All parameters are of course customisable, CamSubject Must be a Humanoid
-- If any parameters are missing or nil the parameters below are the default
local Player
local Intensity = 10
local NumberOfMovements = 40
local CamSubject = Player.Character.Humanoid
local TimeBetweenMovement = 0.03
game.ReplicatedStorage.CameraEffectsModule.FireCameraShake:FireClient(Player,Intensity,NumberOfMovements,CamSubject,TimeBetweenMovement)
Using the Camera Shake on Client:
-- All parameters are of course customisable, CamSubject Must be a Humanoid
-- If any parameters are missing or nil the parameters below are the default
local CameraEffects = require(game.ReplicatedStorage.CameraEffectsModule)
local Player
local Intensity = 10
local NumberOfMovements = 40
local CamSubject = Player.Character.Humanoid
local TimeBetweenMovement = 0.03
CameraEffects:CameraShake(Player,Intensity,NumberOfMovements,CamSubject,TimeBetweenMovement)
Using FOV tweening on Server:
-- All parameters are of course customisable
-- If any parameters are missing or nil the parameters below are the default
local Player
local FOV = 60
local Time = 1
local EasingStyle = Enum.EasingStyle.Sine
local EasingDirection = Enum.EasingDirection.InOut
game.ReplicatedStorage.CameraEffectsModule.FireFOVchange:FireClient(Player,FOV,Time,EasingStyle,EasingDirection)
Using FOV tweening on Client:
-- All parameters are of course customisable
-- If any parameters are missing or nil the parameters below are the default
local CameraEffects = require(game.ReplicatedStorage.CameraEffectsModule)
local Player
local FOV = 60
local Time = 1
local EasingStyle = Enum.EasingStyle.Sine
local EasingDirection = Enum.EasingDirection.InOut
CameraEffects:CameraShake(Player,FOV,Time,EasingStyle,EasingDirection)
How I’ve found this module most useful is by using Keyframe Markers to fire these modules at certain times in an animation!
Example use of Module script and rig:
If you have any issues with using this module I’d be glad to help out!
Get the Model here: