Rotate object towards mouse cursor when click

Hi guys,
This is killing me for hours…
I want simply to rotate an object towards the mouse cursor when I click.
The scripts works, but in its current state when I click the object rotates just a little bit. I have to click 15 times to get the object to rotate in the right position. When I use just GetMouseButton, I can hold the mouse button and the object follow the mouse fine, but I want to rotate the object at the cursor with just one click.
Thank you in Advance!

function Update () {
	if (Input.GetMouseButtonDown(0)) {	
	
	Turn();

}	
}

function Turn () {

	var newPlane = new Plane(Vector3.up, transform.position);
		var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			var hitDistance = 0.0;
		
			
				newPlane.Raycast(ray, hitDistance);
				var targetPoint = ray.GetPoint(hitDistance);
		

		var newRot = Quaternion.LookRotation(transform.position - targetPoint, Vector3.up);
			transform.rotation = Quaternion.Slerp(transform.rotation, newRot, Time.deltaTime * 2);

}

You can try solving this easily as follows:

  1. Find out where the mouse is in the game world (as you are doing with ScreenPointToRay).
  2. Translate (move) the ray’s intersection point so that its y-coordinate matches that of the object you want to rotate. This is to make sure that the object rotates only left/right towards the object, and not e.g. up/down. To get the intersection point, you will need to use a different overload of Physics.Raycast that takes a RaycastHit out parameter.
  3. use Transform.LookAt() to make the object face the point you calculated above.

If this seems a little complicated, skip #2, and then do it later.