FragMate CommunityLog in

FragMate - Software and Game Developer Community, including Resources, Forums, Marketplace & More.

Share

descriptionPoint And Click Script

more_horiz
To start off with, create a new C# script and rename it to TapToMove then, copy and paste the following script (I would have put it in a code thing but it kept making each line a separate code):

Spoiler :
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");
}

}
}

Oh yeah, and every time it does a debug, it says I am here, I thought it was kind of funny...

Credit to: MYNAMETIGER (I had no idea you made this script, I never saw your post).

Last edited by OneKnifeGames on Wed Apr 01, 2015 4:41 pm; edited 1 time in total

_________________
-One Knife Games

descriptionRe: Point And Click Script

more_horiz
[You must be registered and logged in to see this link.] wrote:
To start off with, create a new C# script and rename it to TapToMove then, copy and paste the following script (I would have put it in a code thing but it kept making each line a separate code):

Spoiler :
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");
}

}
}

Oh yeah, and every time it does a debug, it says I am here, I thought it was kind of funny...






Sir,


This is my Script.....  Exclamation  pale  Sad  affraid

It would be very kind of you, if you added my name

Thanks
MYNAMETIGER

_________________

descriptionRe: Point And Click Script

more_horiz
Download the Complete Project from : [You must be registered and logged in to see this link.]


LINK [You must be registered and logged in to see this link.]

_________________

descriptionRe: Point And Click Script

more_horiz
One knife please credit him in your post. I will remove this post if you don't do so for plagiarism.

descriptionRe: Point And Click Script

more_horiz
thanks
very good

descriptionRe: Point And Click Script

more_horiz
Thank you
Permissions in this forum:
You cannot reply to topics in this forum