Draggable Camera (Rotation)?

I’m trying to create a draggable camera that rotates around a point. I’ve searched throughout the DevForum and I cannot find anything for what I’m trying to achieve. The player will hold-click and then move their mouse or finger causing the camera to rotate around a point. Something like the photo attached below.

RotateCameraDisplay

I’m truly stumped as all of what I’ve found is to make the camera rotate at a single point, not around an object. I’d appreciate any help I can get, thank you!

1 Like

Can you explain a bit more?

With the info given:

  • Try CameraType.Watch

  • Try CFrame.lookAt()

  • TweenService or CFrame:Lerp()

What i have understood from your topic is, you’re trying to make camera rotate around object

try this code i got from Devhub

local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")

local target = workspace:FindFirstChild("Part")  -- The object to rotate around
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
local rotationAngle = Instance.new("NumberValue")
local tweenComplete = false

local cameraOffset = Vector3.new(0, 10, 12)
local rotationTime = 15  -- Time in seconds
local rotationDegrees = 360
local rotationRepeatCount = -1  -- Use -1 for infinite repeats
local lookAtTarget = true  -- Whether the camera tilts to point directly at the target

local function updateCamera()
	if not target then return end
	camera.Focus = target.CFrame
	local rotatedCFrame = CFrame.Angles(0, math.rad(rotationAngle.Value), 0)
	rotatedCFrame = CFrame.new(target.Position) * rotatedCFrame
	camera.CFrame = rotatedCFrame:ToWorldSpace(CFrame.new(cameraOffset))
	if lookAtTarget == true then
		camera.CFrame = CFrame.new(camera.CFrame.Position, target.Position)
	end
end

-- Set up and start rotation tween
local tweenInfo = TweenInfo.new(rotationTime, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, rotationRepeatCount)
local tween = TweenService:Create(rotationAngle, tweenInfo, {Value=rotationDegrees})
tween.Completed:Connect(function()
	tweenComplete = true
end)
tween:Play()

-- Update camera position while tween runs
RunService.RenderStepped:Connect(function()
	if tweenComplete == false then
		updateCamera()
	end
end)

Make sure to make localscript in startergui or starterplayer and paste this in

Resource : Customizing the Camera | Roblox Creator Documentation

1 Like

Thank you so much! This is exactly what I needed.