I'm trying to make a top-down style game where the camera moves once the player reaches certain points along the x and z axis.

I've got it moving just fine along the x axis, but i can't seem to get it to move along the z axis (forward/backward)

(video of the script below in action) https://gyazo.com/d85eb99bed810182cfdc5dae12d906e7

local function onRender(deltaTime) -- hooked up to runservice.renderstepped
	local lookAt = humanoidRootPart.CFrame.p
	local cameraLook = camera.CFrame.p
	local target = Vector3.new(0,0,0)
	
	local dx = lookAt.X - cameraLook.X;
	if dx > boundX or dx < -boundX then
		if cameraLook.X < lookAt.X then
			target = Vector3.new(dx - boundX, target.Y, target.Z)
		else
			target = Vector3.new(dx + boundX, target.Y, target.Z)
		end
	end
	
	--local dz blah blah blah math junk

	local desiredPosition = Vector3.new(cameraLook.X, cameraLook.Y, 0) + target
	desiredPosition = Vector3.new(desiredPosition.X, lookAt.Y, desiredPosition.Z)
	desiredPosition = CFrame.new(desiredPosition) * CFrame.fromOrientation(math.rad(-cameraAngle),0,0) * CFrame.new(0,0,cameraDistance)
	
	camera.CFrame = camera.CFrame:Lerp(desiredPosition, cameraSpeed*deltaTime)
end

I'm aware it's probably not the best code. I'm just trying to get something working before I refactor it and such.

Can someone help me figure out what I should do to get the camera moving properly?

heres the variables i have set

local cameraDistance = 50
local cameraAngle = 30
local cameraSpeed = 5

local boundX = 5
local boundZ = 20