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
I want to make the sphere look at touch along the x and z plane.
Pls help
Thank You.