public void OnPointerUp(PointerEventData data) { RaycastHit hit; if (cancelArea != null && cancelArea.CheckScreenPoint(data)) { cancelHandler(); } else { if (CameraView.RaycastScreen(data.position, out hit, mask)) { //NavMeshHit nmHit; //if (NavMesh.SamplePosition (hit.point, out nmHit, 0.1f, NavMesh.AllAreas)) v3upHandler(hit.point); //else // v3upHandler (MyExtensions.v3Inf); } } if (cancelArea != null) { cancelArea.gameObject.SetActive(false); } Done(); }
/*public void OnPointerClick(PointerEventData data){ * OnPointerDown (data); * OnPointerUp (data); * }*/ public void OnDrag(PointerEventData data) { RaycastHit hit; if (CameraView.RaycastScreen(data.position, out hit, mask)) { //NavMeshHit nmHit; //if (NavMesh.SamplePosition (hit.point, out nmHit, 0.1f, NavMesh.AllAreas)) v3positionHandler(hit.point); //else // v3positionHandler (MyExtensions.v3Inf); } }
public void OnPointerDown(PointerEventData data) { if (Input.touchCount <= 1) { twoTap = false; prevDist = 0; hitCtrl = null; hitCol = null; hitPos = Vector3.zero; holdTime = 0; dragDelta = 0; clickPos = data.position; RaycastHit hit; if (CameraView.RaycastScreen(data.position, out hit)) { hitCol = hit.collider; hitCtrl = hitCol.GetComponent <MyController> (); hitPos = hit.point; hitDist = hit.distance; if (hitCtrl == null) { hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist); } if (hitCtrl == null) { CameraView.ShowTapNeutral(hitPos); } else { if (hitCtrl.isLocalPlayer) { CameraView.ShowTapAlly(hitCtrl.transform.position); } else { CameraView.ShowTapEnemy(hitCtrl.transform.position); } } } else if (CameraView.SphereCastScreen(data.position, out hit)) { hitCol = hit.collider; hitCtrl = hitCol.GetComponent <MyController> (); hitPos = hit.point; hitDist = hit.distance; if (hitCtrl == null) { hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist); } if (hitCtrl == null) { CameraView.ShowTapNeutral(hitPos); } else { if (hitCtrl.isLocalPlayer) { CameraView.ShowTapAlly(hitCtrl.transform.position); } else { CameraView.ShowTapEnemy(hitCtrl.transform.position); } } } } else { RaycastHit hit; if (CameraView.RaycastScreen(data.position, out hit)) { CameraView.ShowTapNeutral(hit.point); } else if (CameraView.SphereCastScreen(data.position, out hit)) { CameraView.ShowTapNeutral(hit.point); } twoTap = true; holdTime = -1; Vector2 a = Input.GetTouch(0).position; Vector2 b = Input.GetTouch(1).position; prevDist = new Vector2((a.x - b.x) * 12 / Screen.width, (a.y - b.y) * 12 / Screen.height).magnitude; } }
/*public void OnPointerClick(PointerEventData data){ * OnPointerDown (data); * OnPointerUp (data); * * }*/ public void OnPointerDown(PointerEventData data) { touchCount++; touchIds.Add(data.pointerId); if (touchCount <= 1) { prevDist = 0; hitCtrl = null; hitCol = null; hitBut = null; hitPos = Vector3.zero; holdTime = 0; dragDelta = 0; clickPos = data.position; RaycastHit hit; if (CameraView.RaycastWorldCanvas(data.position, out hit)) { Button b = hit.collider.GetComponent <Button> (); b.Select(); //var pointer = new PointerEventData(EventSystem.current); //ExecuteEvents.Execute(b.gameObject, pointer, ExecuteEvents.pointerEnterHandler); //ExecuteEvents.Execute(b.gameObject, pointer, ExecuteEvents.pointerDownHandler); b.OnPointerEnter(data); b.OnPointerDown(data); hitBut = b; hitCol = hit.collider; } else if (CameraView.RaycastScreen(data.position, out hit)) { hitCol = hit.collider; hitCtrl = hitCol.GetComponent <MyController> (); hitPos = hit.point; hitDist = hit.distance; if (hitCtrl == null) { hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist); } if (hitCtrl == null) { CameraView.ShowTapNeutral(hitPos); } else { if (hitCtrl.team == 0) { CameraView.ShowTapAlly(hitCtrl.transform.position); } else { CameraView.ShowTapEnemy(hitCtrl.transform.position); } } } else if (CameraView.SphereCastScreen(data.position, out hit)) { hitCol = hit.collider; hitCtrl = hitCol.GetComponent <MyController> (); hitPos = hit.point; hitDist = hit.distance; if (hitCtrl == null) { hitCtrl = CameraView.GetClosestControllerToPoint(hitPos, 0.06f * hitDist); } if (hitCtrl == null) { CameraView.ShowTapNeutral(hitPos); } else { if (hitCtrl.team == 0) { CameraView.ShowTapAlly(hitCtrl.transform.position); } else { CameraView.ShowTapEnemy(hitCtrl.transform.position); } } } } else { RaycastHit hit; if (CameraView.RaycastScreen(data.position, out hit)) { CameraView.ShowTapNeutral(hit.point); } else if (CameraView.SphereCastScreen(data.position, out hit)) { CameraView.ShowTapNeutral(hit.point); } holdTime = -1; Vector2 a = Input.GetTouch(0).position; Vector2 b = Input.GetTouch(1).position; prevDist = new Vector2((a.x - b.x) * 12 / Screen.width, (a.y - b.y) * 12 / Screen.height).magnitude; } }