I made this camera script for a module but for some reason when capping the fps to 60 the camera updating stutters
External Media-- Services
Players = game:GetService("Players")
Player = Players.LocalPlayer
RunService = game:GetService("RunService")
UserInputService = game:GetService("UserInputService")
ReplicatedStorage = game:GetService("ReplicatedStorage")
UserGameSettings = UserSettings():GetService("UserGameSettings")
-- Modules
Warp = require(ReplicatedStorage:FindFirstChild("Ventora").Libraries.Warp)
-- camera
Camera = workspace.CurrentCamera
transUpdate = false
lastTrans = nil
Camera_Direction = Vector2.new()
Sensivility = UserGameSettings.MouseSensitivity* 0.5
-- Character
Module.CurrentCharacter = nil
----- Private functions -----
local function bodyTrans(val)
if lastTrans ~= val then
transUpdate = false
end
if not Module.CurrentCharacter or transUpdate == true then
return
end
transUpdate = true
lastTrans = val
for _,v in pairs(Module.CurrentCharacter:GetDescendants()) do
if v.Name == "Head" or v:IsA("Decal") then
v.LocalTransparencyModifier = val
elseif v:IsA("Accessory") then
local handle = v:FindFirstChild("Handle")
handle.LocalTransparencyModifier = val
end
end
end
----- Public -----
function Module.LoadCamera()
Camera.CameraType = Enum.CameraType.Scriptable
RunService:BindToRenderStep("Camera",201,CameraRender)
end
function Module.UnloadCamera()
RunService:UnbindFromRenderStep("Camera")
end
----- Initialize -----
----- Connections -----
function CameraRender(dt)
bodyTrans(true and 1)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
if not Module.CurrentCharacter then
return warn("Character isnt loaded")
end
Camera_Direction -= UserInputService:GetMouseDelta()*Sensivility
Camera_Direction = Vector2.new(Camera_Direction.X%360, math.clamp(Camera_Direction.Y,-80,80))
Camera.CFrame = CFrame.new(Module.CurrentCharacter.PrimaryPart.Position) * CFrame.new(0,1,0) * CFrame.fromOrientation(math.rad(Camera_Direction.Y), math.rad(Camera_Direction.X),0) * CFrame.new(0,.5+(-Camera_Direction.Y/90*.5),(-Camera_Direction.Y/90*.5)*dt*60)
Module.CurrentCharacter.PrimaryPart.CFrame = CFrame.new(Module.CurrentCharacter.PrimaryPart.Position) * CFrame.Angles(0,math.rad(Camera_Direction.X),0*dt*60)
end
return Module