コード例 #1
0
    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();
    }
コード例 #2
0
    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);
    }