Touch: Move camera to touch position?

Hello friends!

I am trying to make a game for android, and in my game I want to have the camera move to the object the player is touching.

This is what the camera now shows. I want it to change directly above the lily pads when I touch them. For now, I’ve googled around and found a touch script that allows me to drag the camera around, which is not what I am looking for.

Anyone mind helping me out? :slight_smile:

  • Mothil

This feels like the correct thing, yet I am unsure what to write inside there.
I sat down and tried thinking how I would easily move the camera, but I am unsure of how to proceed further. :slight_smile:

Arrghh! This is frustrating, but every small success feels so rewarding. The camera moves at touch, or moves from start if I change the code. But I have yet to move it to the clicked object! uhh :stuck_out_tongue:

I just can’t do it, I am getting so tired…
Anyone care to help?

“transform.position = new Vector3 (-4, 2, -10);” does what I am hoping for, to a certain degree. It now jumps to position when clicked, but I am also trying to only make it jump to the lilypads. “&” or “&&” had a couple errors, and what’s located after getmousebutton does not work. (the oncollisionenter)

using UnityEngine;
using System.Collections;

public class TapToMove : MonoBehaviour {
    //flag to check if the user has tapped / clicked.
    //Set to true on click. Reset to false on reaching destination
    private bool flag = false;
    //destination point
    private Vector3 endPoint;
    //alter this to change the speed of the movement of player / gameobject
    public float duration = 50.0f;
    //vertical position of the gameobject
    private float yAxis;
   
    void Start(){
        //save the y axis value of gameobject
        yAxis = gameObject.transform.position.y;
    }
   
    // Update is called once per frame
    void Update () {
       
        //check if the screen is touched / clicked  
        if((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0)))
        {
            //declare a variable of RaycastHit struct
            RaycastHit hit;
            //Create a Ray on the tapped / clicked position
            Ray ray;
            //for unity editor
            #if UNITY_EDITOR
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //for touch device
            #elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
            ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
            #endif
           
            //Check if the ray hits any collider
            if(Physics.Raycast(ray,out hit))
            {
                //set a flag to indicate to move the gameobject
                flag = true;
                //save the click / tap position
                endPoint = hit.point;
                //as we do not want to change the y axis value based on touch position, reset it to original y axis value
                endPoint.y = yAxis;
                Debug.Log(endPoint);
            }
           
        }
        //check if the flag for movement is true and the current gameobject position is not same as the clicked / tapped position
        if(flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)){ //&& !(V3Equal(transform.position, endPoint))){
            //move the gameobject to the desired position
            gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, endPoint, 1/(duration*(Vector3.Distance(gameObject.transform.position, endPoint))));
        }
        //set the movement indicator flag to false if the endPoint and current gameobject position are equal
        else if(flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude)) {
            flag = false;
            Debug.Log("I am here");
        }
       
    }
}

This code came from here: Loading...
And is the closest I’ve got to an answer yet. However, it moves on X and Z axis and I have no idea why.

Fixed.