How do you smooth camera movements?

I’m trying to create smooth camera movements for when you zoom in and move your camera around your character. I have seen this in games like SCP: Roleplay where they have dampened the movements when you look around in 3rd person. If anyone could let me know how to do something like this or give me a quick starter it would be greatly appreciated!

1 Like

One way is to use lerp’s. For example:

local a = Vector3.new(0, 0, 0)
local b = Vector3.new(1, 1, 1)
local percentChange = 0.5
local c = a:lerp(b, percentChange)
print(c) -- This will output (0.5, 0.5, 0.5)

This can also be done with CFrames, it just requires CFrame inputs instead.

Hello, That’s not exactly what your looking for but i think it still can help u about smooth camera movement, for example u want to move the camera of the player like in tycoons when the tutorial show u where the “start working” button is, for this kind of movements i’m using a pretty simple way …
As you probably know u can set the Camera’s CFrame by using :

local Cam = workspace.CurrentCamera
Cam.CFrame = CFrame.new(0, 0, 0)

but this won’t be really that smooth and easy to use so me, i’m using a part that is always looking at the final subject, Because as you probably know you can tween Any BasePart. to make it looking at the subject we will need to make this part the PrimaryPart of a Model and also the subject Position and the Position of the Part with CFrame.lookat() :

local subject = vector3.new(0,0,0)
local Cam_Part = Instance.new("Model", workspace)
local part = script.Parent
part.Parent = Cam_Part
Cam_Part.PrimaryPart = part

--Now lets make it look at the subject

Cam_Part:SetPrimaryPartCFrame(CFrame.lookAt(Cam_Part.PrimaryPart.Position, subject))

--Note: the subject can also be a BasePart : BasePart.Position

Now, we just have to Tween The Part to make it moving smoothly and to set the Camera’s CFrame as the Part’s CFrame :

Cam.CFrame = Part.CFrame

But… this will only make th Camera look at our subject for the first Position so, You will have to put this in a loop, Maybe a .RenderStepped:Connect().
Hope It Helped you !

1 Like

is there a solution yet? i need it lol its kinda good thing fora game