private void Update() { if (!gameController.IsZoomedIn && isBeingTouched && Input.touchCount == 0) { isBeingTouched = false; frameAttachable.gameObject.SetActive(true); gameController.allowZoomInOut = true; directionFromEmptyFrame direction = findDirectionFromEmptyFrame(); switch (direction) { case directionFromEmptyFrame.NotNextToEmptyFrame: return; break; case directionFromEmptyFrame.AboveEmptyFrame: if (Math.Abs(parentTransform.position.z - initialPosition.z) > (frameSize / 2f)) { switchFrames(Direction.Up); return; } break; case directionFromEmptyFrame.BelowEmptyFrame: if (Math.Abs(parentTransform.position.z - initialPosition.z) > (frameSize / 2f)) { switchFrames(Direction.Down); return; } break; case directionFromEmptyFrame.LeftOfEmptyFrame: if (Math.Abs(parentTransform.position.x - initialPosition.x) > (frameSize / 2f)) { switchFrames(Direction.Left); return; } break; case directionFromEmptyFrame.RightOfEmptyFrame: if (Math.Abs(parentTransform.position.x - initialPosition.x) > (frameSize / 2f)) { switchFrames(Direction.Right); return; } break; default: break; } parentTransform.position = initialPosition; StartCoroutine(releaseDrag()); } }
private void OnMouseDrag() { gameController.isDragging = true; if (Input.touchCount == 1) { Touch touch = Input.GetTouch(0); if (touch.deltaPosition.sqrMagnitude > 0.1f) { StartCoroutine(resetLaser()); directionFromEmptyFrame dir = findDirectionFromEmptyFrame(); if (!gameController.IsZoomedIn && frame != null && dir != directionFromEmptyFrame.NotNextToEmptyFrame) { isBeingTouched = true; frameAttachable.gameObject.SetActive(false); gameController.allowZoomInOut = false; Vector3 touchPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z - Camera.main.transform.position.z); Vector3 objPosition = Camera.main.ScreenToWorldPoint(touchPosition); if (parentTransform.Find("Player") != null) { player = parentTransform.Find("Player").gameObject; } switch (dir) { case directionFromEmptyFrame.NotNextToEmptyFrame: return; break; case directionFromEmptyFrame.AboveEmptyFrame: if (objPosition.z <= initialPosition.z && objPosition.z >= (initialPosition.z - frameSize)) { parentTransform.position = new Vector3(transform.position.x, frames.transform.position.y, objPosition.z); } break; case directionFromEmptyFrame.BelowEmptyFrame: if (objPosition.z >= initialPosition.z && objPosition.z <= (initialPosition.z + frameSize)) { parentTransform.position = new Vector3(transform.position.x, frames.transform.position.y, objPosition.z); } break; case directionFromEmptyFrame.LeftOfEmptyFrame: if (objPosition.x >= initialPosition.x && objPosition.x <= (initialPosition.x + frameSize)) { parentTransform.position = new Vector3(objPosition.x, frames.transform.position.y, initialPosition.z); } break; case directionFromEmptyFrame.RightOfEmptyFrame: if (objPosition.x <= initialPosition.x && objPosition.x >= (initialPosition.x - frameSize)) { parentTransform.position = new Vector3(objPosition.x, frames.transform.position.y, initialPosition.z); } break; default: break; } } } else { gameController.isDragging = false; } } }