No, when the player moves left the camera will tilt left, when the player moves right the camera will tilt right.
The player’s camera (the camera should do this by default)? Or just a part in the workspace?
Im not quite sure how to explain this properly so hopefully this image helps you understand what i want to achieve
Yes I understand that, but what do you mean by camera? A part, or the player’s camera?
The players camera the one they control.
I understand cframe, I just don’t know how to get the way the players moving, then rotate the camera according to that.
Roblox automatically rotates the player’s camera when they turn. Are you changing the camera type to Enum.CameraType.Scriptable?
Its not that. its when the player moves left I want the camera to tilt left the camera is working fine when the player looks around it just want it so when the player moves left it will tilt left
Can’t you just check for UserInputService:IsKeyDown(Enum.KeyCode.(A or D)), times the CFrame and revert to normal when neither is down?
I’ve tried that, but you cant apply any changes to the camera without it being scriptable but i still want the camera to have the same position
why you should do is
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
Then from there do UIS to get when the player does a or d then you know how to tilt the cam.
Can you stick two parts on either side of the player somehow and do a while loop to make the camera CFrame in the parts depending on which key is pressed? That way if the player moves the part follows so the camera should update its position similarly to Enum.CameraType.Custom
Those parts would add difficulties in themselves, and if the player dies then you need to think about stuff like that.
He wants to have the camera follow the player so Enum.CameraType.Scriptable by default would leave the camera stuck.
In some cases it does, but this is just a glitch
I got it working, im gonna add some cframe lerping but other than that it works fine scorpions idea to use parts helped because that helped me figure out the rotation, but thanks everyone that responded.
if your want the code here it is:
local camera = workspace.Camera
local player = game:GetService("Players").LocalPlayer
local char = player.Character or player.CharacterAdded:wait()
local runService = game:GetService("RunService")
runService.RenderStepped:connect(function()
local humanoid = char:FindFirstChild("Humanoid")
if humanoid then
local a = false
local x,y,z = camera.CFrame:ToEulerAnglesXYZ()
if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.A) then
a = true
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z) * CFrame.Angles(0,0,math.rad(2))
end
if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.D) then
a = true
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z) * CFrame.Angles(0,0,math.rad(-2))
end
if a == false then
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z)
end
end
end)
local runService = game:GetService(“RunService”)
local character = script.Parent
local humanoid = character:WaitForChild(“Humanoid”)
function updateBobbleEffect()
local currentTime = tick()
if humanoid.MoveDirection.Magnitude > 0 then – we are walking
local bobbleX = math.cos(currentTime * 10) * .35
local bobbleY = math.abs(math.sin(currentTime * 10)) * .35
local bobble = Vector3.new(bobbleX, bobbleY, 0)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, .25)
else -- we are not walking
humanoid.CameraOffset = humanoid.CameraOffset * .75
end
end
runService.RenderStepped:Connect(updateBobbleEffect)
this script makes the camera shake when the player walks but if you change it, it wall do what you want.
Oh ok, that’s great to hear!
…