void Update() { //Mouse Button Press Down if (Input.GetMouseButtonDown(0)) { target = sceneController.GetTarget(); if (target != null) { if (sceneContainer.GetState().Equals(ConstantsHelper.StopState)) { isMouseDragging = true; } //Converting world position to screen position. positionOfScreen = Camera.main.WorldToScreenPoint(target.transform.position); offsetValue = target.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, positionOfScreen.z)); } } //Mouse Button Up if (Input.GetMouseButtonUp(0)) { isMouseDragging = false; } //Is mouse Moving if (isMouseDragging) { //tracking mouse position. Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, positionOfScreen.z); //converting screen position to world position with offset changes. Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offsetValue; //It will update target gameobject's current postion. target.transform.position = currentPosition; } }
public void PlayOrPause() { if (Equals(sceneContainer.GetState(), ConstantsHelper.PlayState)) { sceneContainer.FreezeAll(); sceneContainer.SetState(ConstantsHelper.PauseState); textContainer.UpdateText(sceneContainer.GetState()); } else if (Equals(sceneContainer.GetState(), ConstantsHelper.PauseState) || Equals(sceneContainer.GetState(), ConstantsHelper.StopState)) { sceneContainer.UnfreezeAll(); if (!Equals(sceneContainer.GetState(), ConstantsHelper.PauseState)) { sceneContainer.MoveForce(); } sceneContainer.SetState(ConstantsHelper.PlayState); textContainer.UpdateText(sceneContainer.GetState()); } }
void Update() { if (Input.touchCount > 0) { if (Input.touchCount == 1) { if (!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { /* Positioning Ball */ if (Input.GetTouch(0).phase == TouchPhase.Began) { RaycastHit hitInfo; getTarget = ReturnClickedObject(out hitInfo); if (getTarget != null) { if (ConstantsHelper.BallObject.Equals(getTarget.tag) || ConstantsHelper.BallShadow.Equals(getTarget.tag)) { sceneContainer.SetIsBallSelected(true); positionOfScreen = Camera.main.WorldToScreenPoint(getTarget.transform.position); offsetValue = getTarget.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.GetTouch(0).position.x, Input.GetTouch(0).position.y, positionOfScreen.z)); //getTarget.GetComponent<PositionHelper>().setLastPosition(getTarget.transform.position); } else { sceneContainer.SetIsBallSelected(false); getTarget = cameraTarget; } } } if (Input.GetTouch(0).phase == TouchPhase.Moved) { if (ConstantsHelper.BallObject.Equals(getTarget.tag) || ConstantsHelper.BallShadow.Equals(getTarget.tag)) { if (ConstantsHelper.StopState.Equals(sceneContainer.GetState()) && !ConstantsHelper.PanelObject.Equals(getTarget.tag)) { Vector3 currentScreenSpace = new Vector3(Input.GetTouch(0).position.x, Input.GetTouch(0).position.y, positionOfScreen.z); Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offsetValue; sceneController.debugProp.text = Vector3.Distance(getTarget.transform.position, getTarget.GetComponent <PositionHelper>().getMaxPosition()).ToString(); getTarget.transform.position = currentPosition; } } else { getTarget.transform.Rotate(Input.GetTouch(0).deltaPosition.y *rotationRate, Input.GetTouch(0).deltaPosition.x *rotationRate, 0, Space.World); } } if (Input.GetTouch(0).phase == TouchPhase.Ended && ConstantsHelper.BallObject.Equals(getTarget.tag)) { /* Touching boundaries check */ //if (getTarget.GetComponent<CollisionHelper>().isTouching()) //{ // getTarget.transform.position = getTarget.GetComponent<PositionHelper>().getLastPosition(); //} getTarget.GetComponent <MoveForceStatus>().SetStartingForce(getTarget.transform.position); //getTarget.GetComponent<CollisionHelper>().setTouching(false); } sceneController.DecidePanel(); } } else if (Input.touchCount == 2) { /* Scaling Ball */ if (ConstantsHelper.StopState.Equals(sceneContainer.GetState())) { if (ConstantsHelper.BallObject.Equals(getTarget.tag)) { if (Input.GetTouch(1).phase == TouchPhase.Began) { //getTarget.GetComponent<ScaleHelper>().setLastRadius(getTarget.transform.localScale); } if (Input.GetTouch(1).phase == TouchPhase.Moved) { Touch firstTouch = Input.GetTouch(0); Touch secTouch = Input.GetTouch(1); Vector2 firstTouchPrevPos = firstTouch.position - secTouch.deltaPosition; Vector2 secTouchPrevPos = secTouch.position - firstTouch.deltaPosition; float prevTouchDeltaMag = (firstTouchPrevPos - secTouchPrevPos).magnitude; float touchDeltaMag = (firstTouch.position - secTouch.position).magnitude; float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag; getTarget.transform.localScale += new Vector3(deltaMagnitudeDiff * scaleRate, deltaMagnitudeDiff * scaleRate, deltaMagnitudeDiff * scaleRate); } if (Input.GetTouch(1).phase == TouchPhase.Ended) { /* Touching boundaries check */ //if (getTarget.GetComponent<CollisionHelper>().isTouching()) //{ // getTarget.transform.localScale = getTarget.GetComponent<ScaleHelper>().getLastRadius(); //} //getTarget.GetComponent<CollisionHelper>().setTouching(false); } } } } } ballPropertiesController.SetProperties(getTarget); }