Yes, its handled under RenderStepped.

Here is the full code:

```
local Camera = workspace.CurrentCamera
local Player = game.Players.LocalPlayer
local Mouse = Player:GetMouse()
local Character = Player.Character or Player.CharacterAdded:Wait()
local Head = Character:WaitForChild("Head")
local RightShoulder = Character:FindFirstChild("Right Shoulder",true)
local LeftShoulder = Character:FindFirstChild("Left Shoulder",true)
local HRP = Character:WaitForChild("HumanoidRootPart")
local Hum = Character:WaitForChild("Humanoid")
local UIS = game:GetService("UserInputService")
local RS = game:GetService("RunService")
local CamAngle = Vector2.new(0,0)
local RightShoulderC0:CFrame = RightShoulder.C0
local LeftShoulderC0:CFrame = LeftShoulder.C0
local function lerp(a,b,t)
return a + (b - a) * t
end
Hum.AutoRotate = false
local lasty = 0
local function Update(dt)
Camera.CameraType = Enum.CameraType.Scriptable
UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
UIS.MouseIconEnabled = false
local whitelist = {"Left Arm","Right Arm"}
for i,v in pairs(Character:GetChildren()) do
if v:IsA("Accessory") then
local p = v:FindFirstChild("Handle")
if p then
p.LocalTransparencyModifier = 1
end
end
if not table.find(whitelist,v.Name) and v:IsA("BasePart") then
v.LocalTransparencyModifier = 1
end
end
local HeadCF = Head.CFrame
local HeadPCF = CFrame.new(Head.Position)
local RotX = CFrame.Angles(0,math.rad(CamAngle.X),0)
local RotY = CFrame.Angles(math.rad(CamAngle.Y),0,0)
local AngleCF = HeadPCF*RotX*RotY
local DirectionalCF = CFrame.new(AngleCF.Position,AngleCF:ToWorldSpace(CFrame.new(0,0,-1)).Position)
local x,y,_ = DirectionalCF:ToOrientation()
local HumDirection = HRP.CFrame:VectorToObjectSpace(HRP.Velocity)/16
local z = math.rad(HumDirection.X*2.5 + (lasty-y)*20)
local ZRot = CFrame.Angles(0,0,-math.clamp(z,-10,10)):Inverse()
lasty = y
local XYRot = CFrame.Angles(-x-math.rad(HumDirection.Z*2.5),-y,0):Inverse()
local FinalCF = HeadPCF*XYRot*ZRot
Camera.CFrame = Camera.CFrame:Lerp(FinalCF,dt*15)
local offset = HRP.Position-Camera.CFrame.Position
local x,z = offset.X,offset.Z
local RightShoulderC0_2 = RightShoulderC0-Vector3.new(x,1,z)
local LeftShoulderC0_2 = LeftShoulderC0-Vector3.new(x,1,z)
RightShoulder.C0 = HRP.CFrame:ToObjectSpace(CFrame.new(HRP.Position+Vector3.yAxis,Mouse.Hit.Position))*RightShoulderC0_2
LeftShoulder.C0 = HRP.CFrame:ToObjectSpace(CFrame.new(HRP.Position+Vector3.yAxis,Mouse.Hit.Position))*LeftShoulderC0_2
Camera.FieldOfView = lerp(Camera.FieldOfView,70 + (HRP.Velocity.Magnitude/16) * 5,dt*7.5)
local hrpx,hrpy,hrpz = HRP.CFrame:ToOrientation()
HRP.CFrame = CFrame.new(HRP.Position)*CFrame.Angles(hrpx,y,hrpz)
if UIS:IsKeyDown(Enum.KeyCode.LeftAlt) then
UIS.MouseBehavior = Enum.MouseBehavior.Default
UIS.MouseIconEnabled = true
end
end
RS.RenderStepped:Connect(Update)
UIS.InputChanged:Connect(function(Input,GPE)
if Input.UserInputType == Enum.UserInputType.MouseMovement then
local Delta = UIS:GetMouseDelta()
local X = CamAngle.X - math.clamp(Delta.X/6,-10,10)
local Y = math.clamp(CamAngle.Y - Delta.Y/4,-80,80)
CamAngle = Vector2.new(X % 360,Y) * (UIS.MouseDeltaSensitivity)
end
end)
```