The question is answered, right answer was accepted
Help!--How to make player follow finger touch position in Space Shooter?
So, i've been struggling with this question for 2 weeks and still can't find a proper solution. I want player ship to follow my finger position similar to Galaga wars and Sky force. Please someone point me what changes should i do in my code, i'm very new to coding so please give a step by step solution.
Nevermind actually...
[Solved] I found the answer already thanks to http://www.thegamecontriver.com/ just add this code to player controller script
using UnityEngine;
using System.Collections;
public class InputTouch : 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.GetMouseButton(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");
}
}
}
Follow this Question
Related Questions
Easy onTouch movement 2D 0 Answers
Hold touch button Unity Javascript 1 Answer
How do I get a the movement ofan arm like in truck loader game? 0 Answers
How can convert keyboard controller to touchscreen(android .ios ...etc) 1 Answer
How do I stop mobile touch input from giving more than one output per tap? 1 Answer