Unity Line-Renderer

绘制线条的组件

1. 参数列表
参数名描述
大小绘制线条关键点的数量,将点依次连接
颜色绘制线条的颜色
角顶点折点处顶点数量
末端顶点末端处顶点数量
2. 代码参数列表
// 新建一条线
GameObject go = new GameObject();
go.AddComponent<LineRenderer>();
参数名描述
material材质
startWidth起始宽度
endWidth末端宽度
startColor起始颜色
endColor末端颜色
numCornerVertices角顶点
numCapVertices末端顶点
positionCount顶点数量
2. 函数列表
参数名描述
SetPositions(Vector3[])顶点集合
3. 画笔示例
// 画笔颜色
[SerializeField] Color paintColor = Color.red;
// 画笔宽度
[SerializeField] float paintSize = 0.2f;
// 画笔材质
[SerializeField] Material lineMaterial;

LineRenderer currentLine;
List<Vector3> positions = new List<Vector3>();
bool IsMouseDown = false;

public void ChangeColor(int value)
{
    if(value == 0)
        paintColor = Color.red;
    if (value == 1)
        paintColor = Color.green;
    if (value == 2)
        paintColor = Color.blue;
}

public void ChangeSize(float pse)
{
    paintSize = pse;
}

private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        GameObject go = new GameObject();
        go.transform.SetParent(this.transform);
        currentLine = go.AddComponent<LineRenderer>();
        currentLine.material = lineMaterial;
        currentLine.startWidth = paintSize;
        currentLine.endWidth = paintSize;
        currentLine.startColor = paintColor;
        currentLine.endColor = paintColor;
        currentLine.numCornerVertices = 5;
        currentLine.numCapVertices = 5;

        positions.Clear();
        AddPosition();
        IsMouseDown = true;
    }

    if(IsMouseDown)
    {
        AddPosition();
    }

    if (Input.GetMouseButtonUp(0))
    {
        IsMouseDown = false;
    }
}

void AddPosition()
{
    Vector3 position = GetMousePoint();
    positions.Add(position);
    currentLine.positionCount = positions.Count;
    currentLine.SetPositions(positions.ToArray());
}

Vector3 GetMousePoint()
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    bool flag = Physics.Raycast(ray, out hit);
    if(flag)
    {
        return hit.point - Vector3.forward / 100;
    }
    return Vector3.zero;
}
4. 附加项
  1. 存在类似的组件,名为trail renderer,可用于绘制拖尾效果
  2. 对每个点添加碰撞器。长度为两个点之间长度,角度设置右方向为该点到下一个点的向量
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莉萝爱萝莉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值