使用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
    评论
### 回答1: Unity使用LineRenderer组件可以在游戏中绘制线条。使用方法如下: 1. 在场景中添加一个空物体 2. 在该空物体上添加LineRenderer组件 3. 设置LineRenderer的属性,如线条颜色、宽度等 4. 通过代码设置LineRenderer的顶点坐标,从而绘制线条 例如: ```c# using UnityEngine; public class LineDrawer : MonoBehaviour { private LineRenderer lineRenderer; private Vector3 startPos; private Vector3 endPos; void Start() { lineRenderer = GetComponent<LineRenderer>(); startPos = new Vector3(-10, 0, 0); endPos = new Vector3(10, 0, 0); lineRenderer.SetPosition(0, startPos); lineRenderer.SetPosition(1, endPos); } } ``` 这样就可以在场景中绘制一条从(-10,0,0)到(10,0,0)的线段了。 ### 回答2: UnityLinerenderer组件是渲染直线的基础组件。通过该组件,我们可以在Unity游戏引擎中绘制直线。该组件用于绘制连续直线,并且可以使用纹理对线进行着色,非常适合在游戏中绘制雷达、轨迹、手绘图等。 使用Linerenderer组件需要以下几个步骤: 1. 在Unity编辑器中创建一个GameObject,右键选择“3D Object” -> “Line” ,然后命名新创建的游戏对象并保存。被创建物体上会自带LineRenderer组件。 2. 选择LineRenderer组件,在Inspector面板中我们可以设置线的属性,比如线的宽度、颜色、材质等。 3. 在这里我们可以为这条直线定义顶点,这些顶点是用来绘制线的。我们可以在代码中编写自定义算法,来决定每个点的坐标位置,也可以手动在Inspector面板中设置每个点的坐标来自定义线。 4. 程序员可以在代码中使用Linerenderer组件来绘制计算出的坐标的直线。例如,根据用户输入的坐标绘制路径路线。这些线将在场景中动态生成。 需要注意的是,LineRenderer实现在镜头非常近的情况下有些问题, 因为线必须放在屏幕空间中。为了避免这个问题,我们将整个场景缩小,用远离相机的高分辨率渲染纹理来渲染画线效果。 总之,利用Linerenderer可以快速绘制相对简单的直线,不需要使用LineRenderer的一堆组件。为了增强游戏的视觉效果,可以使用纹理和双边(bezier)曲线实现更加丰富的线条绘制。 ### 回答3: UnityLineRenderer是一种绘制直线、曲线等图形的组件。使用LineRenderer可以实现游戏中很多效果,例如画轮廓、绘制路径等。在这里,我将介绍UnityLineRenderer使用。 首先,在Unity中创建LineRenderer组件很简单。只需要将游戏对象上添加一个LineRenderer组件即可。添加完毕后,默认情况下该组件会绘制一条短的直线。我们需要进行一些设置来使其绘制出我们需要的图形。 可以通过LineRenderer组件上的Inspector面板进行设置。这里可以设置LineRenderer的材质、颜色、宽度等参数。其中,关键的是设置Positions属性中的点的坐标,这一步操作即可实现画线功能。例如: ```C# LineRenderer lineRenderer = GetComponent<LineRenderer>(); lineRenderer.positionCount = 2; lineRenderer.SetPosition(0, new Vector3(0, 0, 0)); lineRenderer.SetPosition(1, new Vector3(1, 1, 1)); ``` 上述代码可以在游戏对象上绘制一条从原点(0, 0, 0)到(1, 1, 1)的直线LineRenderer还有一些其他的设置,例如通过设置useWorldSpace属性可以使Points使用世界坐标而非局部坐标进行绘制;设置起点和终点颜色,可以实现颜色渐变效果等等。 另外需要注意的是,LineRenderer组件需要确保被绘制的对象有一个渲染器组件,例如MeshRenderer或SpriteRenderer,否则线条将不可见。 总的来说,UnityLineRenderer是一个十分实用的组件,可以很好的实现画线的功能,适用于制作各类游戏效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值