my script is
local runService = game:GetService("RunService") -- Runs something every single frame local currentSpeed = 0 local character = script.Parent -- this script will be in the actual player because its in StarterPlayerScripts local pos = character.HumanoidRootPart.Position local humanoid = character:WaitForChild("Humanoid") -- wait for child because we dont want to index it if its not loaded yet as that would cause errors function updateHeadBobble() local currentTime = tick() -- tick(): gets current "epoc" time stamp if humanoid.MoveDirection.Magnitude > 0 then -- Mangitude: The distance from 0 so if the magnitude is bigger than 0, the player is moving pos = character.HumanoidRootPart.Position wait(1) currentSpeed = (pos-character.HumanoidRootPart.Position).magnitude print(currentSpeed) local bobbleX = math.cos(currentTime * 7.5) * currentSpeed -- bobbles in a cosine graph motion,an infinite ~ local bobbleY = math.abs(math.sin(currentTime * 7.5)) * currentSpeed -- bobbles in a sine graph motion, practically the same as cosine but a bit offset -- math.abs: gets rid of all negative values and turns them positive local bobble = Vector3.new(bobbleX, bobbleY, 0) humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25) -- lerp: linear interpolation, second number in lerp is the percentage you want to interpolate in each frame, we're interpolating because if we didnt it would be a sharp cut to the bobbing when you do start moving in the game else -- player is not moving humanoid.CameraOffset = humanoid.CameraOffset * 0.75 -- bring camera back to not bobbing in a smooth way end end runService.RenderStepped:Connect(updateHeadBobble) --runService: the service --RenderStepped: every frame on the server --Connect(updateHeadBobble): Connects the function to the service so it runs function for every frame on server
It works but it happens after i move but i want the headbob to happen whilst im moving Anyone got any idea???