Exemplo n.º 1
0
 void Start()
 {
     my_Material.color = Color.red;
     My_LineWidth      = 15;
     g           = new GameObject("g");
     Vxyz        = new Vector3(2, 0, 0);//平行于X轴向量
     trianglePos = new trianglePos();
 }
Exemplo n.º 2
0
    protected override void CollectingPoints()
    {
        if (BegainDraw)
        {
            if (ScreenshotToolsCrl.instance.LimitDrawArea() == false)
            {
                return;
            }
            Vector3 e;//结束点
            if (Input.GetMouseButtonDown(0))
            {
                trianglePos.tr1 = Input.mousePosition;
                s = GetNewPoint();
                //显示的z轴看自己需求赋值,只要在相机前面就行

                //Vector2 SpawnPos;
                // RectTransformUtility.ScreenPointToLocalPointInRectangle(ScreenshotToolsCrl.instance.MainCanvas.GetComponent<RectTransform>(), Input.mousePosition, Camera.main, out SpawnPos);
                // Debug.Log(SpawnPos);
                go = Instantiate(Arrow) as GameObject;
                go.transform.SetParent(ScreenshotToolsCrl.instance.ScreenshotToolbar.transform);
                go.transform.position      = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
                go.transform.localRotation = Quaternion.identity;
                go.transform.localScale    = Vector3.one;
                ArrowObject.Add(go);
            }
            //拖拽便于确定箭头方向
            if (Input.GetMouseButton(0))
            {
                //trianglePos.tr2 = Camera.main.WorldToScreenPoint(go.transform.GetChild(0).position);
                //trianglePos.tr3 = Camera.main.WorldToScreenPoint(go.transform.GetChild(1).position);
                trianglePos.tr2 = go.transform.GetChild(0).position;
                trianglePos.tr3 = go.transform.GetChild(1).position;
                // Debug.Log(trianglePos.tr2 + "====" + trianglePos.tr3);
                trianglePos.vector = trianglePos.tr3 - trianglePos.tr2;
                e  = GetNewPoint();
                lp = AddLine(lp, s, e, true);
                // Vector2 SpawnPos;
                // RectTransformUtility.ScreenPointToLocalPointInRectangle(ScreenshotToolsCrl.instance.MainCanvas.GetComponent<RectTransform>(), Input.mousePosition, Camera.main, out SpawnPos);
                go.transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
                Vector3 Vangle = lp[lp.Length - 1] - lp[lp.Length - 2]; //最后一条线段
                float   angle  = Vector3.Angle(Vangle, Vxyz) - 90;      //三角箭头绕着Z轴旋转 那么就限制与X轴夹角为旋转角度吧
                if (Vangle.y > 0)
                {
                    go.transform.eulerAngles = new Vector3(0, 0, angle);
                }
                else
                {
                    go.transform.eulerAngles = new Vector3(0, 0, 180 - angle);
                }
            }
            if (Input.GetMouseButtonUp(0))
            {
                if (list == null)
                {
                    list = new List <trianglePos>();
                }
                list.Add(trianglePos);
                trianglePos = new trianglePos();
            }
        }
    }