Camera Locked in Place Whilst Being Animated

I’m trying to overlay a sort of “camera shake” animation (that I created in blender) to create the feeling of viewing a video through a hand-held camera. To do this, I created this script below:

local rs = game:GetService("RunService")
local char = script.Parent
local repStor = game:GetService("ReplicatedStorage")

local vm = repStor:WaitForChild("FakeCam"):Clone()
vm.Parent = workspace.CurrentCamera

local camAnim_Walk = vm.WalkShake
vm.Animation:LoadAnimation(camAnim_Walk):Play()

workspace.CurrentCamera.CameraType = Enum.CameraType.Follow

rs.RenderStepped:Connect(function()
	vm.HumanoidRootPart.CFrame = char.HumanoidRootPart.CFrame
	
	workspace.CurrentCamera.CFrame = vm.FakeCamera.CFrame
end)

When I use this method, though, I can’t move the camera in any direction (I have it set to LockFirstPerson). Does this have to do with animation priority or is it a fault in my scripting?

Logically it has to do with the fact that every frame the Camera’s CFrame is being overridden with the FakeCamera’s one, so how do I get around this?

I’m a little confused on what vm is. I thought it was a part at first, but you do vm.HumanoidRootPart so it makes it seem like an invisible dummy of some sort?
Anyway, the CameraType “follow” only keeps the CameraSubject near the center of the screen, and you’re supposed to set the CameraType to Scriptable if you want to make custom camera behavior. One thing to know about setting the CameraType to Scriptable is that it resets itself for some reason, so you have to do something like this:

“vm” stands for viewmodel. I animated a fake camera within a standard viemodel, essentially.