I’m trying to add recoil to a gun every time you fire it. However there is a RenderStepped loop that is contradicting the recoil which is used to control the over the shoulder camera of the gun, which always puts the camera back to it’s original position. I want the recoil to tween or lerp and not happen instantly, however I don’t want it to do so all the time because then the camera wouldn’t follow as fast. Currently I’m not sure how to integrate that into my code.
local bloomValue = CFrame.new(0, 0, 0)
local function cameraBloom(status) -- everytime you fire the gun
if status == true then
local randomCFrame = CFrame.new(math.random(0, 1) / 5, math.random(0, 1) / 5, 0)
bloomValue = randomCFrame
elseif status == false then
end
end
connection = game:GetService("RunService").RenderStepped:Connect(function()
startCFrame = CFrame.new((hrp.CFrame.Position)) * CFrame.Angles(0, math.rad(x), 0) * CFrame.Angles(math.rad(y), 0, 0)
cameraCFrame = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, offset.Z))
cameraDirection = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, -10000))
camera.CFrame = CFrame.new(cameraCFrame.Position, cameraDirection.Position) * bloomValue
hrp.CFrame = CFrame.lookAt(hrp.Position, Vector3.new(cameraDirection.Position.X, 0, cameraDirection.Position.Z))
end)