This guy in scripting support needed help making a camera pan script, where you hold down MB1 and it pans around, so I had some trouble making it but eventually solved it!
I know this camera movement can probably be used in alot of games so, go make something great! I added documentation if you dont understand some stuff!
Also, I am aware i’m using mouse which is deprecated. just switch it out with userinputservice.
local player = game.Players.LocalPlayer local camera = workspace.CurrentCamera local mouse = player:GetMouse() camera.CameraType = Enum.CameraType.Scriptable -- The height of the camera when player spawns in local CAM_HEIGHT = 25 -- How fast it pawns around when your dragging! local PAN_SPEED = 10 local lastDragPosition -- Makes the camera look down camera.CFrame = CFrame.new(0,CAM_HEIGHT,0) * CFrame.Angles(-math.rad(90),0,0) mouse.Button1Down:Connect(function() dragging = true -- Remove the Y component of the Vector3 so it doesnt mess with the camera's Y pos lastDragPosition = Vector3.new(mouse.Hit.Position.X,0,mouse.Hit.Position.Z) end) mouse.Button1Up:Connect(function() dragging = false end) game:GetService("RunService").Heartbeat:Connect(function(deltaTime) if dragging then local delta = Vector3.new(mouse.Hit.Position.X,0,mouse.Hit.Position.Z) - lastDragPosition camera.CFrame = CFrame.new(camera.CFrame.Position + -delta * deltaTime * PAN_SPEED) * CFrame.Angles(-math.rad(90),0,0) end end)