Is lerp part intentionally commented out? if not and you using lerp in your video then you should use camera’s x and y position and lerp only the z axis of the item.
You should make it lerp by smoothSpeed*deltaTime
This keeps it framerate independant.
As for the plain cframe setting, I really don’t know because it works fine in a default baseplate. Check your microprofiler to see if there’s anything lagging Renderstepped.
if thats the case, this will make your function run right after the camera.
Try this code I modified from RunService documentation;
local RunService = game:GetService("RunService")
local function afterCamera(delta)
-- Code in here will run right after the default camera script
end
RunService:BindToRenderStep("After camera", Enum.RenderPriority.Camera.Value + 1, afterCamera)
BindToRenderStep is a method that basically allows you when a function should be called during a frame’s phase that is right before the phase at which the frame would be rendered
to clarify in advance by “when a function should be called during a frame’s phase that is right before the phase at which the frame would be rendered”
im saying that during a standard .PreRender event, there is still like sub phases in that frame phase at which things are computed and calculated first and you can determine when that function in BindToRenderStep should be called in those sub phases using the second parameter in the method which it needs a number or enum given to it
then the properties in Enum.RenderPriority is the things you must provide to the method to determine when the function is called out of all of those sub phases
they are assigned to a number, which also explains why you can provide a raw number to second parameter instead of enum