When touch and drag objects in android fast, leave dragging.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class codigoBola : MonoBehaviour {
public Text debug; // <- aqui arrastro un texto que tengo dentro de un canvas para usarlo a modo de console.log().
GameObject objeto = null; // <- usare esta variable para saber a objeto se esta haciendo click en ese momento.
// Para el drag:
Plane plane;
Vector3 Offset;
void Start() {
//Screen.orientation = ScreenOrientation.Landscape;
}
Ray generateMouseRay(Vector3 touchPosition){
Vector3 touchNear = new Vector3 (touchPosition.x, touchPosition.y, Camera.main.nearClipPlane);
Vector3 touchFar = new Vector3 (touchPosition.x, touchPosition.y, Camera.main.farClipPlane);
Vector3 tnear = Camera.main.ScreenToWorldPoint (touchNear);
Vector3 tfar = Camera.main.ScreenToWorldPoint (touchFar);
Ray mr = new Ray ( tnear, tfar - tnear );
return mr;
}
void FixedUpdate() {
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
// Ray ray = Camera.main.ScreenPointToRay(touch.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();
// Ray mouseRay = generateMouseRay(touch.position);
// if(Physics.Raycast(mouseRay.origin, mouseRay.direction, out hit, Mathf.Infinity) && hit.collider.tag == "Draggable" ){
if(Physics.Raycast(ray, out hit, Mathf.Infinity) && hit.collider.tag == "Draggable" ){
objeto = hit.collider.gameObject;
ray = Camera.main.ScreenPointToRay(touch.position);
float rayDistance;
plane = new Plane (Camera.main.transform.forward * -1, objeto.transform.position);
plane.Raycast(ray, out rayDistance);
if (touch.phase == TouchPhase.Began) {
debug.text = "Touched " + objeto.name;
plane.Raycast(ray, out rayDistance);
Offset = objeto.transform.position - ray.GetPoint(rayDistance);
} else if (touch.phase == TouchPhase.Moved){
if (plane.Raycast (ray, out rayDistance)){
objeto.transform.position = ray.GetPoint(rayDistance) + Offset;
debug.text = "Dragging... " + objeto.name + " " + objeto.transform.position;
}
} else if (touch.phase == TouchPhase.Ended){
debug.text = "Ended!";
}
}// end physiscs.raycast
} // end if > 0
} // end update
} // end class