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