Problem with camera and mouse

Hello devforum, I have a problem with this script:

game:GetService("RunService").RenderStepped:Connect(function()
	if tool.Parent ~= player.Backpack then
		print("Weapon is equipped")
		uis.MouseBehavior = Enum.MouseBehavior.LockCenter
		camera.CameraType = Enum.CameraType.Scriptable

		local startCFrame = CFrame.new((hrp.CFrame.Position)) * CFrame.Angles(0, math.rad(x), 0) * CFrame.Angles(math.rad(y), 0, 0)
		local cameraCFrame = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, offset.Z))
		local cameraDirection = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, -10000))

		camera.CFrame = CFrame.new(cameraCFrame.Position, cameraDirection.Position)
	else
		print("Weapon is unequipped")
		uis.MouseBehavior = Enum.MouseBehavior.Default
		wait(0.2)
		camera.CameraType = Enum.CameraType.Custom
	end
end)

Thee prints work, but when the part with “Weapon is unequipped” is excuted, the camera stays scriptable and the mouse stays locked.

Thanks for reading.

Can’t see any errors but why do you need to use a RenderStepped for that? You could just bind to a Equipped and Unequipped event?

tool.Equipped:Connect(function()
        print("Weapon is equipped")
 		uis.MouseBehavior = Enum.MouseBehavior.LockCenter
		camera.CameraType = Enum.CameraType.Scriptable

		local startCFrame = CFrame.new((hrp.CFrame.Position)) * CFrame.Angles(0, math.rad(x), 0) * CFrame.Angles(math.rad(y), 0, 0)
		local cameraCFrame = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, offset.Z))
		local cameraDirection = startCFrame:ToWorldSpace(CFrame.new(offset.X, offset.Y, -10000))

		camera.CFrame = CFrame.new(cameraCFrame.Position, cameraDirection.Position)
end)

tool.Unequipped:Connect(function()
        print("Weapon is unequipped")
		uis.MouseBehavior = Enum.MouseBehavior.Default
		wait(0.2)
		camera.CameraType = Enum.CameraType.Custom
end)
2 Likes

I use renderstepped because im setting the camera offset for the shoulder camera