How to execute the lookAt function here?

Hey Guys! I’m creating a game for mobile devices and now I’m stuck at a point where cannot execute the lookAt function properly. I’ve a plane with a sphere on it. Earlier I had the camera exactly at the top of the plane like a top view of the plane and I was able to execute the lookAt function properly with the following code:

void FixedUpdate() {

		GameObject targetObject = GameObject.Find("Ball");

		if (targetObject != null) {
			if (Input.touchCount > 0) 
			{
				Touch theTouch = Input.GetTouch(0);
				
				Ray ray = Camera.main.ScreenPointToRay(theTouch.position);
				
				RaycastHit hit;
				
				if(Physics.Raycast(ray, out hit, 100.0f))
				{

					if(Input.touchCount ==1)
					{
						if(theTouch.phase == TouchPhase.Began)
						{

							isRotating = false;
						}
						
						if(theTouch.phase == TouchPhase.Moved)
						{
						Vector3 tempTouch = new Vector3(theTouch.position.x ,theTouch.position.y, myCamera.position.y - targetObject.transform.position.y);
							fingerPosition = Camera.main.ScreenToWorldPoint(tempTouch);
						targetObject.transform.LookAt(fingerPosition);



							isRotating = true;
							
						}
						
						if(theTouch.phase == TouchPhase.Ended || theTouch.phase == TouchPhase.Canceled)
						{
							if(isRotating == true)
							{
								
							}
						}
					}						
				}						
				
			}								
		}


	}									

But now as I’ve rotated the camera along the x-axis by 55 degrees so it behaves awkwardly. I know I’ve to calculate the vertical distance between the camera and the plane. But I’m bit bad with maths. This is my scene looks like

23079-photo-509.png

I want to make the sphere look at touch along the x and z plane.

Pls help

Thank You.

When your camera is at an angle with respect to the world axes, then ScreenToWorldPoint() is no longer a good solution. Typically the solutions is to use Unity’s built-in Plane class and Raycast() against that plane to generate the point. Here is a script in the Unity Wiki that does that:

http://wiki.unity3d.com/index.php?title=LookAtMouse

Note due to perspective, at some angles and distances the alignment my look a bit off. If you have doubts about the alignment, setup to view both the Scene and Game windows with the Scene camera looking top down. Place a marker object at the point on the plane.