Esempio n. 1
0
 //var script;
 // Use this for initialization
 void Awake()
 {
     gameLogic = GameObject.Find ("GameLogic");
     logic = gameLogic.GetComponent<TouchLogic> ();
     //	Soda.Stop ();
 }
Esempio n. 2
0
    void LateUpdate()
    {
        if (Input.touches.Length == 1)
        {
            if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                Touch touch = Input.touches[0];

                Quaternion desiredRotation = transform.rotation;

                TouchLogic.Calculate();

                if (Mathf.Abs(TouchLogic.turnAngleDelta) > 0)
                {     // rotate
                    Vector3 rotationDeg = transform.eulerAngles;

                    rotationDeg.z    = -TouchLogic.turnAngleDelta;
                    desiredRotation *= Quaternion.Euler(rotationDeg);
                }

                // not so sure those will work:
                transform.rotation = desiredRotation;


                // transform.Rotate(touch.deltaPosition.y * rotationRate, -touch.deltaPosition.x * rotationRate, 0, Space.World);
                Vector3 rot = new Vector3(touch.deltaPosition.y * rotationRate, -touch.deltaPosition.x * rotationRate, transform.eulerAngles.z * rotationRate);
                //  transform.rotation = Quaternion.EulerAngles(rot);
            }
        }

        else if (Input.touches.Length == 2)
        {
            Touch t1 = Input.touches[0];
            Touch t2 = Input.touches[1];

            if (t1.phase == TouchPhase.Began || t2.phase == TouchPhase.Began)
            {
                initialFingersDistance = Vector2.Distance(t1.position, t2.position);
                initialScale           = gameObject.transform.localScale;
            }

            else if (t1.phase == TouchPhase.Moved || t2.phase == TouchPhase.Moved)
            {
                var currentFingersDistance = Vector2.Distance(t1.position, t2.position);
                //   Debug.Log(currentFingersDistance);
                ////if (currentFingersDistance != initialFingersDistance)
                //{
                var scaleFactor = currentFingersDistance / initialFingersDistance;
                gameObject.transform.localScale = initialScale * scaleFactor;
                //}

                float Dx = t1.position.x - transform.position.x;
                float Dy = t1.position.y - transform.position.y;


                //var cameraTransform = Camera.main.transform.InverseTransformPoint(0, 0, 0);
                //transform.position = Camera.main.ScreenToWorldPoint(new Vector3(t2.position.x, t2.position.y, cameraTransform.z -0.5f));


                Vector3 pos = t2.position;

                //Vector3 pos = t1.position - t2.position;
                Vector3 touchedPos = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, 10));
                transform.position = Vector3.Lerp(transform.position, touchedPos, Time.deltaTime * 4);
                //   transform.position += touchedPos;

                float      pinchAmount     = 0;
                Quaternion desiredRotation = transform.rotation;

                TouchLogic.Calculate();

                if (Mathf.Abs(TouchLogic.pinchDistanceDelta) > 0)
                {     // zoom
                    pinchAmount = TouchLogic.pinchDistanceDelta;
                }

                if (Mathf.Abs(TouchLogic.turnAngleDelta) > 0)
                {     // rotate
                    Vector3 rotationDeg = Vector3.zero;
                    rotationDeg.z    = -TouchLogic.turnAngleDelta;
                    desiredRotation *= Quaternion.Euler(rotationDeg);
                }

                // not so sure those will work:
                transform.rotation  = desiredRotation;
                transform.position += Vector3.forward * pinchAmount;
            }
        }
    }