CODE:
repeat wait() until script.Parent:FindFirstChild("Humanoid")
local userInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local leanDirection = nil
local leanInc = 3
local defaultOffset = Vector3.new(0,0,0)
local eOffset = Vector3.new(leanInc,0,0)
local qOffset = Vector3.new(-leanInc,0,0)
local defaultCameraOffset = CFrame.Angles(0,math.rad(0),0)
local eCameraOffset = CFrame.Angles(0,math.rad(45),0)
local qCameraOffset = CFrame.Angles(0,math.rad(-45),0)
local tweening = false
local function tween(object, goal)
local tweenInfo = TweenInfo.new(0.25, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
game:GetService("TweenService"):Create(object, tweenInfo, goal):Play()
tweening = true
wait(0.25)
tweening = false
end
local function updateCameraPOS()
if leanDirection == nil then
tween(script.Parent.Humanoid, {CameraOffset = defaultOffset})
elseif leanDirection == "E" then
tween(script.Parent.Humanoid, {CameraOffset = eOffset})
elseif leanDirection == "Q" then
tween(script.Parent.Humanoid, {CameraOffset = qOffset})
end
end
userInputService.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed then
if input.KeyCode == Enum.KeyCode.E then
leanDirection = "E"
elseif input.KeyCode == Enum.KeyCode.Q then
leanDirection = "Q"
end
end
updateCameraPOS()
end)
userInputService.InputEnded:Connect(function(input, gameProcessed)
if not gameProcessed then
if input.KeyCode == Enum.KeyCode.E and leanDirection == "E" then
leanDirection = nil
elseif input.KeyCode == Enum.KeyCode.Q and leanDirection == "Q" then
leanDirection = nil
end
end
updateCameraPOS()
end)
game:GetService("RunService").RenderStepped:Connect(function()
if not tweening then
if leanDirection == nil then
script.Parent.Humanoid.CameraOffset = defaultOffset
camera.CFrame = CFrame.Angles(0, math.rad(0), 0)
elseif leanDirection == "E" then
script.Parent.Humanoid.CameraOffset = eOffset
camera.CFrame = CFrame.Angles(0, math.rad(-45), 0)
elseif leanDirection == "Q" then
script.Parent.Humanoid.CameraOffset = qOffset
camera.CFrame = camera.CFrame * CFrame.Angles(45, 0, 0)
end
end
end)
The camera spasses out, and if I remove the camera.CFrame lines, it works good. However, whenever you lean I want the camera to tilt too. Someone please help me, I've been stuck for days and I've posted this several time on the developer forum and still, nobody is helping me.
Thanks!
