Question by
nXFiles · Jun 28, 2017 at 12:07 PM ·
uitouchtouch controlsblocking
UI blocking
I have done many attempts on blocking ui from getting touch input but non worked out. I need to move player where it is touched, auto move, but now I should hold touch so my player can move. any help would be appreciated
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;
public class PointToMove : MonoBehaviour {
public static PointToMove pToMove;
private Transform playerTrans; //Player Transform
private Vector3 destPos; //Destination Position
private float destDist; //Destination Distance
private Touch fingerTouch = Input.GetTouch(0);
public float moveSpeed; //Movement Speed
public float tempMoveSpeed; //Temporal movement Speed
public bool isPaused = true;
void Start () {
playerTrans = transform; //Set player transform with this gameobject transform
destPos = playerTrans.position; //To prevent transforms reset
}
void FixedUpdate () {
if(!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
{
destDist = Vector3.Distance(destPos, playerTrans.position); //Getting distance of player and destination\
if (destDist < 0.05f)
{
moveSpeed = 0;
}
else if (destDist > 0.05f)
{
moveSpeed = tempMoveSpeed;
}
if (Input.GetMouseButtonDown(0) && isPaused == false) //Moves player when clicked
{
Plane playerPlane = new Plane(Vector3.up, playerTrans.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitDist = 0.0f;
if (playerPlane.Raycast(ray, out hitDist))
{
Vector3 targetPoint = ray.GetPoint(hitDist);
destPos = ray.GetPoint(hitDist);
Quaternion targetRot = Quaternion.LookRotation(targetPoint - transform.position);
}
}
else if (Input.GetMouseButton(0)) //Moves player when mouse is down
{
Plane playerPlane = new Plane(Vector3.up, playerTrans.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitDist = 0.0f;
if (playerPlane.Raycast(ray, out hitDist))
{
Vector3 targetPoint = ray.GetPoint(hitDist);
destPos = ray.GetPoint(hitDist);
Quaternion targetRot = Quaternion.LookRotation(targetPoint - transform.position);
}
}
if (destDist > 0.05f)
{
playerTrans.position = Vector3.MoveTowards(playerTrans.position, destPos, moveSpeed * Time.deltaTime);
}
}
}
}
Comment