If the screenshake breaks when I move the character model then it’s a very wonky screenshake, which is why I’m trying to fix it. Also, I’m generally just waiting for more people to propose more solutions, as none of them so far are fitting or functional although I do very much appreciate the help.
Why not use the CameraOffset property of the Humanoid? It might not look identical to your current screenshake however if you use it properly it will produce a similar result.
The “snap” isn’t minimal at all, it makes it all look very wonky and poorly scripted. If the camera is visibly frozen in place for 1/4 of a second, it could seriously mess up PVP and combat in general.
Can I have the rest of the script where you first mess with camera properties and when you reset it? I’ll get on pc in a few hours and look through it.
shakes.ChildAdded:connect(function(child)
if child.Name == "ShakeBlock" then
local range = child:WaitForChild("Radius")
local intense = child:WaitForChild("Intense")
if range then
if (root.Position - child.Position).magnitude <= range.Value then
if intense.Value == false then
print("ooga booga i didn't make the less intense screenshake")
else
delay(0,function()
local original = cam.CFrame
offset(cam.CFrame * CFrame.Angles(0,-0.02,0),0.05)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,0.03,0),0.05)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,-0.02,0),0.06)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,0.02,0),0.07)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,-0.02,0),0.05)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,0.01,0),0.05)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,-0.005,0),0.05)
wait(0.01)
offset(cam.CFrame * CFrame.Angles(0,0.002,0),0.05)
wait(0.01)
offset(original,0.1)
end)
end
end
end
end
end)
most of the other stuff is just triggering the camera effect
It still ends up snapping the camera. I don’t anchor the character at any point, I only use a bodyposition at some point to temporarily and smoothly keep the player “hanging” from a certain position.