private void LetterGestureUpdated(GestureRecognizer gesture) { Debug.Log("Pan state " + gesture.State); if (gesture.State == GestureRecognizerState.Began) { PointerEventData p = new PointerEventData(EventSystem.current); p.position = new Vector2(gesture.FocusX, gesture.FocusY); raycast.Clear(); EventSystem.current.RaycastAll(p, raycast); foreach (RaycastResult result in raycast) { if (result.gameObject.name.IndexOf("LetterPrefab", System.StringComparison.OrdinalIgnoreCase) >= 0) { // we have a letter! Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY)); draggingLetter = result.gameObject.transform; dragOffset = (Vector2)draggingLetter.position - dragPos; break; } } if (draggingLetter == null) { gesture.Reset(); } } else if (gesture.State == GestureRecognizerState.Executing) { Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY)); Vector3 pos = draggingLetter.transform.position; // don't mess with the z pos.x = dragPos.x + dragOffset.x; pos.y = dragPos.y + dragOffset.y; draggingLetter.transform.position = pos; } else if (gesture.State == GestureRecognizerState.Ended) { draggingLetter = null; } }
private void LetterGestureUpdated(GestureRecognizer gesture) { //Debug.Log("Pan state " + gesture.State); if (gesture.State == GestureRecognizerState.Began) { PointerEventData p = new PointerEventData(EventSystem.current); p.position = new Vector2(gesture.FocusX, gesture.FocusY); raycast.Clear(); EventSystem.current.RaycastAll(p, raycast); foreach (RaycastResult result in raycast) { if (result.gameObject.name.IndexOf("BlockDraggable", System.StringComparison.OrdinalIgnoreCase) >= 0) { print("DRAGGABLE FOUND BOUNDARIES"); // we have a letter! this.boundaries = this.blockDragManager.NotifyDraggingBlockStart(result.gameObject); //print("BOUNDARIES:" + this.boundaries[0]); //print("BOUNDARIES:" + this.boundaries[1]); Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY)); draggingLetter = result.gameObject.transform; dragOffset = (Vector2)draggingLetter.position - dragPos; break; } } if (draggingLetter == null) { gesture.Reset(); } } else if (gesture.State == GestureRecognizerState.Executing) { this.boundaries = this.blockDragManager.CalculateBlockBoundaries(this.draggingLetter.gameObject); Vector2 dragPos = FingersUtility.ScreenToCanvasPoint(canvas, new Vector2(gesture.FocusX, gesture.FocusY)); Vector3 pos = draggingLetter.transform.position; // don't mess with the z float newPosition = dragPos.x + dragOffset.x; float containerX = this.container.GetComponent <RectTransform>().position.x; if (newPosition >= this.boundaries[0] + containerX && newPosition <= this.boundaries[1] + containerX) { this.lastDelta = newPosition - pos.x; pos.x = newPosition; //pos.y = dragPos.y + dragOffset.y; draggingLetter.transform.position = pos; } else { //print("DRAGGABLE BOUNDARIES BLOCK"); //print("BOUNDARIES:" + this.boundaries[0]); //print("BOUNDARIES:" + this.boundaries[1]); } } else if (gesture.State == GestureRecognizerState.Ended) { this.blockDragManager.NotifyDraggingBlockEnd(draggingLetter.gameObject, this.lastDelta); GameObject gameObject = draggingLetter.gameObject; draggingLetter = null; } }