how to prevent this slow rotation/drift from happening…?
Your method of calculating rotation is invalid.
You are subtracting the position from the CFrame, instead you could just use fakeCam.CFrame.Rotation like this:
local fakeCam = CurrentViewmodel:FindFirstChild("FakeCamera", true)
if fakeCam and fakeCam:IsA("BasePart") then
local pos = Camera.CFrame.Position
local rot = fakeCam.CFrame.Rotation
Camera.CFrame = CFrame.new(pos) * rot
end
Let me know if that fixes anything.
If it does fix it, here’s why (for future reference):
- By deducting the position from the CFrame you are creating an invalid CFrame that has a position of 0, 0, 0 and has incorrect orientation relative to the origin which leads to imprecision.
