- Home /
 
I need to move an object when touched on an android phone
I would like to know how I can move an object when touched or dragged on a smartphone. Please, I need help urgently Thank you for giving your attention, I would like to move an object by touching it on my Android phone. Please someone to help me with an idea or how I could do it. It's urgent.
Answer by Ginxx009 · Jan 17, 2018 at 05:40 AM
Start from here Input.GetTouch function . So it's more like doing it something like this
 using UnityEngine;
 using System.Collections;
 
 public class ExampleClass : MonoBehaviour
 {
     public GameObject projectile;
     public GameObject clone;
     void Update()
     {
         for (int i = 0; i < Input.touchCount; ++i)
         {
             if (Input.GetTouch(i).phase == TouchPhase.Began)
                 clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;
         }
     }
 }
 
               EDIT : Tell me if anything goes wrong
  using UnityEngine;
  using System.Collections;
   
  public class PressToMove: 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");
          }
      
      }
  }
 
              Ready if I have an idea of the code, but the idea is automatically generated in other script objects automatically, but what I want is to touch the objects created to move to the position I am playing on the phone. @Paul$$anonymous$$evin
Then ins$$anonymous$$d of doing my example because you want it to be more specific do it something like this . Vector3 touchPosition = Input.GetTouch(0).position; 
Your answer