LineRender画圆函数

public void DrawLineRenderer(Vector3 centerPos, float r, int pointNum)
    {
        //动态创建 画线对象
        GameObject obj = new GameObject();
        obj.name = "R";
        LineRenderer line = obj.AddComponent<LineRenderer>();
        line.loop = false;
        //设置有多少个点
        line.positionCount = pointNum;
        //让其首尾相连
        line.loop = true;

        //得到每个点之间 间隔的度数
        float angle = 360f / pointNum;

        //准备得到每一个点
        for (int i = 0; i < pointNum; i++)
        {
            //知识点
            //1.点加向量 相当于平移点
            //2.四元数 * 向量 相当于在 旋转向量
            line.SetPosition(i, centerPos + Quaternion.AngleAxis(angle * i, Vector3.up) * Vector3.forward * r);
        }
    }

常按画线

    private LineRenderer line2;
    private Vector3 nowPos;
    void Update()
    {
        //这样写可以画多条线而不是一直连续 ,鼠标每抬起一次就会创建一条新的linerenderer
        if (Input.GetMouseButtonDown(0))
        {
            GameObject obj = new GameObject();
            line2 = obj.AddComponent<LineRenderer>();
            line2.loop = false;
            line2.startWidth = 0.5f;
            line2.endWidth = 0.5f;

            line2.positionCount = 0;
        }
        //使得用户可以长按鼠标画linerenderer线
        if (Input.GetMouseButton(0))
        {
            line2.positionCount += 1;
            //如何得到鼠标转世界坐标的 对应点 
            //知识点

            //1.如何得到鼠标位置
            //Input.mousePosition
            //2.怎么把鼠标 屏幕坐标转世界坐标
            //Camera.main.ScreenToWorldPoint(Input.mousePosition);

            nowPos = Input.mousePosition;
            //需要把位置往前方推一点 才能让摄像机看到
            nowPos.z = 10; //修改z非常关键不然相机会记录不到
            line2.SetPosition(line2.positionCount - 1, Camera.main.ScreenToWorldPoint(nowPos)); //Camera.main.ScreenToWorldPoint非常关键——屏幕坐标转世界坐标操作
        }
    }