Example #1
0
    void Update()
    {
        List <Touch> touches = TouchHelper.GetTouches();

        if (touches.Count > 0)
        {
            var touch = touches[0];
            if (touch.phase == TouchPhase.Began)
            {
                var        ray = Camera.main.ScreenPointToRay(touch.position);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit, 100))
                {
                    ARObject arObj = hit.collider.GetComponent <ARObject>();

                    if (arObj == null)
                    {
                        arObj = hit.collider.GetComponentInParent <ARObject>();
                    }
                    if (arObj != null)
                    {
                        SelectObject(arObj);
                    }
                }
            }
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        List <Touch> Touches = TouchHelper.GetTouches();

        if (Touches.Count <= 0)
        {
            return;
        }
        foreach (Touch touch in Touches)
        {
            Vector2 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
            switch (touch.phase)
            {
            case TouchPhase.Began:
                foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList)
                {
                    if (fruitPiece.GetComponent <BoxCollider2D>().OverlapPoint(touchPosition))
                    {
                        // fruit is grabbed by the touch
                        fruitPiece.GetComponent <SimpleGravity>().velocity = Vector3.zero;
                        fruitPiece.GetComponent <SimpleGravity>().gravity  = 0.0f;
                        fruitPiece.GetComponent <FruitBase>().GrabBy(touch.fingerId);
                    }
                }
                break;

            case TouchPhase.Moved:
                foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList)
                {
                    if (fruitPiece.GetComponent <FruitBase>().IsGrabbedBy(touch.fingerId))
                    {
                        fruitPiece.transform.position =
                            new Vector3(touchPosition.x, touchPosition.y, 0);
                    }
                }
                break;

            case TouchPhase.Ended:
                foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList)
                {
                    if (fruitPiece.GetComponent <FruitBase>().IsGrabbedBy(touch.fingerId))
                    {
                        fruitPiece.GetComponent <FruitBase>().Release();

                        // Calculate releasing velocity.
                        Vector2 previousPos = Camera.main.ScreenToWorldPoint(touch.position - touch.deltaPosition);
                        Vector3 deltaPos    = touchPosition - previousPos;
                        float   multiplier  = 0.5f / touch.deltaTime;
                        Debug.Log("Delta screen position: x " + deltaPos.x + ",y " + deltaPos.y);
                        Debug.Log("Delta screen time: " + Time.deltaTime);
                        fruitPiece.GetComponent <SimpleGravity>().velocity =
                            new Vector3(deltaPos.x * multiplier, deltaPos.y * multiplier, 0);
                        fruitPiece.GetComponent <SimpleGravity>().gravity = SimpleGravity.GRAVITY;
                    }
                }
                break;
            }
        }
    }
Example #3
0
    void Update()
    {
        List <Touch> touches = TouchHelper.GetTouches();

        if (touches.Count > 0)
        {
            var touch = touches[0];

            if (touch.phase == TouchPhase.Moved)
            {
                targetObject.Rotate(targetObject.up * touch.deltaPosition.x * speed * Time.deltaTime);
            }
        }
    }
    void Update()
    {
        List <Touch> touches = TouchHelper.GetTouches();

        if (touches.Count > 0)
        {
            var touch = touches[0];

            if (touch.phase == TouchPhase.Began)
            {
                float closestDot = -1f;

                foreach (Transform axis in axes)
                {
                    Ray     ray          = Camera.main.ScreenPointToRay(new Vector3(touch.position.x, touch.position.y, 0));
                    Vector3 vectorToAxis = (axis.position - Camera.main.transform.position).normalized;
                    float   currentDot   = Vector3.Dot(ray.direction, vectorToAxis);

                    if (currentDot > closestDot)
                    {
                        closestDot = currentDot;
                        activeAxis = axis;
                    }
                }
            }

            if (touch.phase == TouchPhase.Moved)
            {
                Vector3 offset = activeAxis.forward;
                offset.x *= touch.deltaPosition.x;
                offset.y *= touch.deltaPosition.y;
                offset.z *= touch.deltaPosition.x;

                if (widgetType == WidgetType.TranslateWidget)
                {
                    targetObject.position += offset * speed * Time.deltaTime;
                }
                else if (widgetType == WidgetType.ScaleWidget)
                {
                    targetObject.localScale += offset * speed * Time.deltaTime;
                }
            }

            if (touch.phase == TouchPhase.Ended)
            {
                activeAxis = null;
            }
        }
    }