- 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;