Esempio n. 1
0
    void Update()
    {
        if (ballManager.GetFlag())
        {
            if (Input.GetMouseButtonDown(0))// && Input.touchCount == 1)
            {
                hit       = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
                startFlag = false;
                if (hit)
                {
                    if (hit.transform.tag.Equals(ExitT))
                    {
                        startFlag = true;
                    }
                }
            }
            else if (Input.GetMouseButton(0) && startFlag)
            {
                mousePos   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                mousePos.z = 0;
                dxM        = mousePos.x - Ttransform.position.x;
                dyM        = mousePos.y - Ttransform.position.y;
                gradientM  = Mathf.Atan2(dxM, dyM);

                //if (gradientM < 0)
                //   gradientM = -gradientM;
                dxT       = Etransform.position.x - Ttransform.position.x;
                dyT       = Etransform.position.y - Ttransform.position.y;
                gradientT = Mathf.Atan2(dxT, dyT);

                rotateDegree = ((gradientT - gradientM) * Mathf.Rad2Deg);
                if (moveFlag)
                {
                    if (dxM < 0 && dyM < 0 && dxT > 0 && dyT < 0)
                    {
                        Etransform.RotateAround(Ttransform.position, Vector3.forward, -5);
                    }
                    else if (dxM > 0 && dyM < 0 && dxT < 0 && dyT < 0)
                    {
                        Etransform.RotateAround(Ttransform.position, Vector3.forward, 5);
                    }
                    else
                    {
                        Etransform.RotateAround(Ttransform.position, Vector3.forward, 10 * rotateDegree * Time.deltaTime);
                    }
                }
                else
                {
                    if (Mathf.Atan2(dxC, dyC) > gradientT && gradientT > gradientM)
                    {
                        moveFlag = true;
                    }
                    else if (Mathf.Atan2(dxC, dyC) < gradientT && gradientT < gradientM)
                    {
                        moveFlag = true;
                    }
                    if (dxM < 0 && dyM < 0 && dxT > 0 && dyT < 0)
                    {
                        moveFlag = false;
                    }
                    else if (dxM > 0 && dyM < 0 && dxT < 0 && dyT < 0)
                    {
                        moveFlag = false;
                    }
                }
            }
        }
    }