Exemplo n.º 1
0
    void MouseDragCall()
    {
        Vector3 touchDownPosition = Input.mousePosition;

        touchDownPosition = Camera.main.ScreenToWorldPoint(touchDownPosition);

        Vector3 secondToLastPoint = new Vector3(transform.position.x, transform.position.y, 0.0f);

        if (comp_path.PathCount > 1)
        {
            secondToLastPoint = comp_path.GetPoint(comp_path.PathCount - 2);
        }


        if (bounds_screenToWorld.Contains(touchDownPosition) &&
            Physics2D.LinecastNonAlloc((Vector2)secondToLastPoint, (Vector2)touchDownPosition, results_rayhits, path_checkMask) < 1)
        {
            if (Vector2.Distance((Vector2)secondToLastPoint, (Vector2)touchDownPosition) >= comp_path.maxSegmentDistance)
            {
                comp_path.InsertPoint(comp_path.PathCount - 1, touchDownPosition);                                               // to push the last one back
            }

            comp_path.SetPoint(comp_path.PathCount - 1, touchDownPosition);
        }
        else
        {
            if (comp_path.PathCount > 1)
            {
                comp_path.RemovePoint(comp_path.PathCount - 1);
                MouseUpCall();
            }
            else
            {
                comp_path.SetPoint(0, transform.position);
            }
        }
    }