I am trying to recreate a miniature heat seeking tank. Currently it follows the players perfectly with this code:

while true do
	local torso = findNearestTorso(bin.Position)
		local BodyVelocity = script.Parent.BodyVelocity
	if torso~=nil and (bin.Position - torso.Position).Magnitude > 1 then
		script.Parent.CFrame = CFrame.new(script.Parent.Position, Vector3.new(torso.Position.X, script.Parent.Position.Y, torso.Position.Z));
		BodyVelocity.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
		BodyVelocity.Velocity = Vector3.new(script.Parent.CFrame.lookVector.X * 11,-5,script.Parent.CFrame.lookVector.Z * 15)
		script.Parent.sound2.Volume = 1
	else
		BodyVelocity.MaxForce = Vector3.new(0,0,0)
		BodyVelocity.Velocity = Vector3.new(0,-5,0)
		script.Parent.sound2.Volume = 0
	end
	wait()
end

In the show the tank can climb walls. I have houses laid out around the map so the tank needs to either be able to move around them (no idea how to pathfind) or climb them. I am really hoping someone can help me out.