Hi, someone knows any way i can make the camera only follow the angles of the head? , because i can’t zoom out to third person
`local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local UserGameSettings = UserSettings():GetService("UserGameSettings")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local camera = workspace.CurrentCamera
--localPlayer.CameraMode = Enum.CameraMode.Classic
local head = character:WaitForChild("Head")
local hrp = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")
humanoid.CameraOffset = Vector3.zAxis
local lastOffset = Vector3.zero
local cameraRot = Vector2.zero
local sensitivityMultiplier = Vector2.new(0.010, 0.010)
local cameraClamp = { Y = NumberRange.new(-math.rad(80), math.rad(80)) }
local visibleParts = {
"Torso",
"Left Arm",
"Left Leg",
"Right Arm",
"Right Leg"
}
local function UpdateCameraRotation()
local mouseDelta = UserInputService:GetMouseDelta()
local mouseSensitivity = UserGameSettings.MouseSensitivity
cameraRot = Vector2.new(
cameraRot.X - mouseDelta.X * mouseSensitivity * sensitivityMultiplier.X,
math.clamp(
cameraRot.Y - mouseDelta.Y * mouseSensitivity * sensitivityMultiplier.Y,
cameraClamp.Y.Min,
cameraClamp.Y.Max
)
)
end
RunService:BindToRenderStep("CameraUpdate", Enum.RenderPriority.Camera.Value, function(dt: number)
if not head or not hrp or not humanoid then return end
UpdateCameraRotation()
local headCF = head.CFrame:: CFrame
local hrpCF = hrp.CFrame:: CFrame
local offset = lastOffset:Lerp(humanoid.CameraOffset, dt * 10)
lastOffset = offset
offset = offset.X * hrpCF.RightVector + offset.Y * hrpCF.UpVector + offset.Z * hrpCF.LookVector
local hrpY, hrpX, hrpZ = hrpCF:ToOrientation()
local raw = (headCF + offset) * CFrame.Angles(-hrpY, -hrpX, -hrpZ)
local rot = CFrame.Angles(0, cameraRot.X, 0) * CFrame.Angles(cameraRot.Y, 0, 0)
camera.CFrame = raw * rot
end)
RunService:BindToRenderStep("CharacterRotationUpdate", Enum.RenderPriority.Character.Value, function(dt: number)
if not hrp then return end
if not humanoid.AutoRotate then return end
local hrpCF = hrp.CFrame
hrp.CFrame = CFrame.new(hrpCF.Position) * CFrame.fromOrientation(0, cameraRot.X, 0)
end)
RunService.PreRender:Connect(function(dt: number)
--UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
for _, part: BasePart in character:GetDescendants() do
pcall(function()
part.LocalTransparencyModifier = table.find(visibleParts, part.Name) and 0 or 1
end)
end
end)
UserInputService.InputBegan:Connect(function(inputObject, event)
if event then return end
if inputObject.KeyCode == Enum.KeyCode.E then
local animation = Instance.new("Animation")
animation.AnimationId = `rbxassetid://{18744792611}`
humanoid.Animator:LoadAnimation(animation):Play()
end
end)`