
KeylessUniversal

local player = game.Players.LocalPlayer
local camera = workspace.CurrentCamera
local runService = game:GetService("RunService")
local userInput = game:GetService("UserInputService")
camera.CameraType = Enum.CameraType.Scriptable
player.CameraMode = Enum.CameraMode.Classic
local sensitivity = 0.15
local pitch = 0
local yaw = 0
local function hideHeadAndAccessories(character)
for _, obj in pairs(character:GetDescendants()) do
-- Hide head
if obj:IsA("BasePart") and obj.Name == "Head" then
obj.LocalTransparencyModifier = 1
end
-- Hide hair/accessories
if obj:IsA("Accessory") then
local handle = obj:FindFirstChild("Handle")
if handle then
handle.LocalTransparencyModifier = 1
end
end
end
end
local function setupCharacter(character)
local humanoid = character:WaitForChild("Humanoid")
local root = character:WaitForChild("HumanoidRootPart")
local head = character:WaitForChild("Head")
humanoid.AutoRotate = false
hideHeadAndAccessories(character)
userInput.MouseBehavior = Enum.MouseBehavior.LockCenter
userInput.MouseIconEnabled = false
userInput.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
yaw -= input.Delta.X * sensitivity
pitch -= input.Delta.Y * sensitivity
pitch = math.clamp(pitch, -80, 80)
end
end)
runService.RenderStepped:Connect(function()
if humanoid.Health <= 0 then return end
-- Rotate character only on Y axis
root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, math.rad(yaw), 0)
-- Camera attached to real head
camera.CFrame =
head.CFrame
* CFrame.Angles(math.rad(pitch), 0, 0)
* CFrame.new(0, 0, -0.4)
end)
end
if player.Character then
setupCharacter(player.Character)
end
player.CharacterAdded:Connect(setupCharacter)No comments yet for this script.



