Hey there! I recently thought to implement an over the shoulder camera system for my game.
What is the problem?
Well, the problem lies in the camera not rotating on the Y axis. The camera does move on the x axis but I want to move it to the Y axis too.
What have you tried so far?
Well, I have tried the following in a local script. (I do not get any errors):
local UIS = game:GetService("UserInputService") local Character = script.Parent local Camera = workspace.CurrentCamera local RunService = game:GetService("RunService") local Root = Character:WaitForChild("HumanoidRootPart") local Humanoid = Character:WaitForChild("Humanoid") local BodyGyro = Instance.new("BodyGyro") local CameraXSensitivity = 0.5 local IsMouseLocked = true Humanoid.AutoRotate = false BodyGyro.MaxTorque = Vector3.new(0, 4e5, 0) BodyGyro.P = 4e5 BodyGyro.Parent = Root UIS.InputBegan:Connect(function(input) if (input.UserInputType == Enum.UserInputType.Keyboard) then if (input.KeyCode == Enum.KeyCode.LeftAlt) then print("Unlocked") IsMouseLocked = not IsMouseLocked end end end) UIS.InputChanged:Connect(function(input) if (input.UserInputType == Enum.UserInputType.MouseMovement) then local xDelta = input.Delta.X local DegreeChange = math.rad(xDelta * CameraXSensitivity) BodyGyro.CFrame = BodyGyro.CFrame * CFrame.fromAxisAngle(Vector3.new(0, 1, 0), -DegreeChange) -- This is the part which probably needs changing. end end) RunService:BindToRenderStep("otsCamera", 201, function() local lookAt = (Root.CFrame * CFrame.new(0, 0, -20)).Position local CamStartPos = (Root.CFrame * CFrame.new(4, 4, 10)).Position if IsMouseLocked then UIS.MouseBehavior = Enum.MouseBehavior.LockCenter else UIS.MouseBehavior = Enum.MouseBehavior.Default end Camera.CameraType = Enum.CameraType.Scriptable Camera.CFrame = CFrame.new(CamStartPos, lookAt) end)
Thanks for any help.
If you do not understand any part of the question please comment.