Using Mouse.Hit, in full you’d want something like this
local mouse = game:GetService("Players").LocalPlayer:GetMouse()
while task.wait() do
Turret.CFrame = CFrame.lookAt(Turret.Position, mouse.Hit.Position)
end
Then you want to introduce lag, or a maximum rotation velocity. Maybe AlignOrientation would be useful but I’m not sure how you would get that to track the mouse. Bonus it should be easily repeatable for the server to client and not look laggy like a CFrame loop would look from server to client.