I need this done using user input service, the wiki claims that it is more powerful but lacks built in mouse functions. for anyone confused I basically need mouse.Hit but using user input service. I have tried using camera:ViewPortPointToRay(X, Y, 1) but that doesn't seem to make a ray that points towards the mouses location in 3d space but instead the look vector of the cameras cframe. I want the mouses position in 3d space, not the cameras look vector. passing the mouses x and y into viewport doesn't seem to make a ray pointing to the vector 3 equivilent.

UIS.InputBegan:Connect(function(input,processed)
	if processed then return end
	if input.KeyCode == Enum.KeyCode.E then
		local mouseLocation = UIS:GetMouseLocation()
		local unitRay = camera:ViewportPointToRay(mouseLocation.X, mouseLocation.Y * 0)
		print("Camera positioin: " .. tostring(camera.CFrame.Position))
		print("Unit ray position: " .. tostring(unitRay.Direction))
		local p = Instance.new("Part", workspace)
		p.Size = Vector3.new(1, 1, 1)
		p.Anchored = true
		p.BrickColor = BrickColor.Blue()
		p.CFrame = CFrame.new(unitRay.Origin, unitRay.Direction)
	end
end)