Esempio n. 1
0
    // Calculate direction and move
    void OnMouseDrag()
    {
        if (StickersController.Paused)
        {
            return;
        }

        if (!StickersController.CanDrag)
        {
            return;
        }

        Vector2 currentMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 deltaMousePos   = currentMousePos - startMousePos;

        // Calculate angle and direction
        if (!StickersController.HasAngle)
        {
            if (deltaMousePos.magnitude < minDrag)
            {
                return;
            }

            CalculateAngle(deltaMousePos);
        }

        // Limit target position
        targetPosition = currentMousePos;
        CalculateTargetPosition();

        // Limit stickers speed
        Vector2 offset = targetPosition - prevMousePos;

        offset.x = Mathf.Clamp(offset.x, -maxSpeed, maxSpeed);
        offset.y = Mathf.Clamp(offset.y, -maxSpeed, maxSpeed);

        deltaMousePos  = prevMousePos - startMousePos;
        deltaMousePos += offset;
        prevMousePos   = startMousePos + deltaMousePos;

        StickersController.MoveLine(deltaMousePos, transform.position);
    }