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只能控制节点位置的宽度,节点之间宽度则是线性插值产生,使用贝塞尔曲线描述属实没有必要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值