使用LineRenderer画线

这两天做了项目正好需要用到画图功能,然后就小研究了一下,虽然不是很复杂,记录一下

我采用的是Unity自带的那个LineRender组件,然后我们简单学习了解一下这个组件,其中最重要的就是我们设置Positions每个点位置然后连接,我们可以设置材质球,也可以设置Color,但是我在做的过程中,给这个颜色赋值好像不起作用,

首先我们要启用Use World Space:(如果不启用的话渲染不到屏幕上,不启用我赋值的这些点会跟随我们的LineRender坐标移动)

Loop如果启用的话,会将我们设置的点的最后一个点和第一点自动连接起来,

好了解完这些我们就上代码吧:

最重要的就是我们要将鼠标的坐标点转化成世界点然后再赋值给Positions

1、画线

 if (Input.GetMouseButtonDown(0))
        {
            clone = Instantiate(tf, tf.transform.position, transform.rotation);
            line = clone.GetComponent<LineRenderer>();
            line.startColor = Color.white;
            line.endColor = Color.white;
            line.startWidth = 0.1f;
            line.endWidth = 0.1f;
            i = 0;
        }
        if (Input.GetMouseButton(0))
        {
            i++;
            line.positionCount = i;
            line.SetPosition(i - 1, camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15)));
        }

2、画三角形

其实画三角形最重要的是我们要设置三个点,起始点我们肯定知道,最后一个点我们肯定也知道,然后我们算中那个点就可以了,比如说直角三角形,那我们中间的那个点的X轴肯定和第一个点的X轴相等,中间的那个点的Y轴肯定和最后一个点的Y轴相等,所以我们就可以求出中那个点坐标;

if (Input.GetMouseButtonDown(0))
        {
            startPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
            clone = Instantiate(tf, tf.transform.position, Quaternion.identity);
            line = clone.GetComponent<LineRenderer>();
            line.startColor = Color.black;
            line.endColor = Color.red;
            line.startWidth = 0.1f;
            line.endWidth = 0.1f;
        }
        if (Input.GetMouseButton(0))
        {
            endPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
            Pos = new Vector3(startPos.x, endPos.y, 15);
            line.positionCount = 3;
            line.SetPosition(0, Camera.main.ScreenToWorldPoint(startPos));
            line.SetPosition(1, Camera.main.ScreenToWorldPoint(Pos));
            line.SetPosition(2, Camera.main.ScreenToWorldPoint(endPos));
        }

还有一种三角形式等腰三角形,也是一样的思路找规律也可以算出中间的那个点

 if (Input.GetMouseButtonDown(0))
        {
            startPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
            clone = Instantiate(tf, tf.transform.position, Quaternion.identity);
            line = clone.GetComponent<LineRenderer>();
            line.startColor = Color.black;
            line.endColor = Color.red;
            line.startWidth = 0.1f;
            line.endWidth = 0.1f;
        }
        if (Input.GetMouseButton(0))
        {
            endPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
            //Pos = new Vector3(startPos.x, endPos.y, 15);
            float a = endPos.x - startPos.x;
            Vector3 p = new Vector3(startPos.x, endPos.y, 15);
            float a1 = p.x - a;
            Pos = new Vector3(a1, endPos.y, 15);
            line.positionCount = 3;
            line.SetPosition(0, Camera.main.ScreenToWorldPoint(startPos));
            line.SetPosition(1, Camera.main.ScreenToWorldPoint(Pos));
            line.SetPosition(2, Camera.main.ScreenToWorldPoint(endPos));
        }

3、画圆,道理也一样,我们知道起始点(a)最后一点(b)那么我们就可以算出圆的半径,和圆心所在的位置,

 

总结我们使用LineRender画线主要是将各个点设置到Position中,如果修改颜色可以修改LineRender中材质的颜色,这次只是把基本的功能实现了,我们还可以加一些更丰富的功能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值