public void DeleteBall() { int index = sceneContainer.GetBalls().IndexOf(getTarget); //DESTROY PREFAB Destroy(getTarget.transform.parent); //REMOVE BALL sceneContainer.GetBalls().RemoveAt(index); sceneContainer.GetRigidbodyContainers().RemoveAt(index); sceneContainer.GetBallPositions().RemoveAt(index); sceneContainer.SetIsBallSelected(false); //REMOVE SHADOW sceneContainer.GetShadows().RemoveAt(index); sceneContainer.GetShadowPositions().RemoveAt(index); DecidePanel(); }
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); }