I've been working on a custom camera script and I tried to implement a poppercam back into the scriptable camera. I've learned that there's a function GetLargestCutoffDistance()
that returns a float, which refers to the number of studs the camera must move forward if there is something blocking it. Here's a little snippet of my code:
runService.RenderStepped:Connect(function() local Character = localPlayer.Character local rootPart = Character:FindFirstChild("HumanoidRootPart") if Character and rootPart then Camera.Focus = Character.Head.CFrame --How many studs to move forward local cutoff = Camera:GetLargestCutoffDistance({}) --Set rotated start cframe inside head local startCFrame = CFrame.new((rootPart.CFrame.p + Vector3.new(0,2,0)))*CFrame.Angles(0, math.rad(xAngle), 0) *CFrame.Angles(math.rad(yAngle), 0, 0) --Set camera focus and cframe local cameraCFrame = startCFrame + startCFrame:vectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,cameraPos.Z)) local cameraFocus = startCFrame + startCFrame:vectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,-50000)) --Set camera CFrame. I've played around with numbers and this seems to be where I should add the cutoff to make the camera move forward Camera.CFrame = CFrame.new(cameraCFrame.p,cameraFocus.p) * CFrame.new(0, 0, -cutoff) end end)
It seems correct, but when testing, the camera jitters back and forth between the CFrame before adding the cutoff, and after.
Any ideas?