Issues with rotating camera around character

I’m trying to make my own camera system but I’m having trouble making it so that it rotated around the character. The issue is that I have no idea how to make it so that it took in consideration where the camera already is and rotated from that point. I use CFrame.Angles() for the rotation. Any help would be appreciated

1 Like

You should be using TweenService to move the camera.

Here is an example:

local TweenService = game:GetService("TweenService")

local RunService = game:GetService("RunService")

local player = game.Players.LocalPlayer

local target = player.Character.HumanoidRootPart

local camera = workspace.CurrentCamera

camera.CameraType = Enum.CameraType.Scriptable

camera.Focus = target.CFrame

local rotationAngle = Instance.new("NumberValue")

local tweenComplete = false

local cameraOffset = Vector3.new(0, 0, 12)

local rotationTime = 4 -- Time in seconds

local rotationDegrees = 360

local rotationRepeatCount = -1 -- Use -1 for infinite repeats

local lookAtTarget = false -- Whether the camera tilts to point directly at the target

local function updateCamera()

local rotatedCFrame = CFrame.new(target.Position) * CFrame.Angles(0, math.rad(rotationAngle.Value), 0)

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)
1 Like