Unity2018.4LineRenderer用法和解释

Line Renderer是unity提供的用来方便地绘制线条的组件。

通过指定线条的每一个节点位置即可绘制出一条折线,可以在Inspection的Position中设定每个节点的位置,Position[0]位start,Position[Length-1]为end,也可以在脚本中使用如下代码指定折线节点位置。

        Vector3[] positions = new Vector3[3];
        positions[0] = new Vector3(-2.0f, -2.0f, 0.0f);
        positions[1] = new Vector3(0.0f, 2.0f, 0.0f);
        positions[2] = new Vector3(2.0f, -2.0f, 0.0f);
        lineRenderer.positionCount = positions.Length;
        lineRenderer.SetPositions(positions);

可以在Inspection设定颜色信息,也可以在脚本中使用startColor,endColor修改颜色。

需要添加指定材质,推荐使用 New Material(Shader.Find("Sprites/Default")),PBR材质不会受到设定的颜色的影响。

参考LineRenderer Manual:https://docs.unity.cn/cn/current/Manual/class-LineRenderer.html

LineRenderer API:https://docs.unity.cn/cn/current/ScriptReference/LineRenderer.html

LineRenderer最让人疑惑的部分是Position下方Width部分,估计为了偷懒使用Animation Curve来定义折线的宽度。

这条曲线是一个xy都定义在0-1区间的曲线,y值为节点的该位置的宽度,x = 0为第一位节点位置宽度,x=1为最后一个节点的位置宽度。

问题就是:位于中间的节点如何获得对应宽度?

答案是:该节点到第一个点的长度/最后有一个点到第一个点(即总长度)。这里的长度不是空间意义上的,而是每一段线段长度的加和。

上图中定义四个点(0,0,0)(3,0,4)(3,0,0)(4,0,0)

第二个点到第一个点距离为5,总长度为10,所以第二个点对应x = 5/10 = 0.5,此处y=0,宽度为0;

需注意width曲线是一条平滑曲线,但是绘制在scene上折线宽度并不平滑,故LineRenderer只能控制节点位置的宽度,节点之间宽度则是线性插值产生,使用贝塞尔曲线描述属实没有必要。

猜你喜欢

转载自blog.csdn.net/GameObject14715/article/details/108002955
今日推荐