Unity中如何根据LineRenderer的长度动态的修改材质的平铺数量

        最近项目要用LineRenderer做人员的轨迹,并且需要给出人员的行进方向,想着直接用个箭头的贴图材质放到LineRenderer上,但是有个问题,人员的轨迹是不固定的,贴图的tile数量就没办法事先确定,想了下,在脚本中根据LineRenderer的长度动态的修改材质的平铺数量,废话不多数,上代码。

        为了代码简洁,我这里就用两个点测试下;

void Start()
{
        //给LineRenderer两个点
        lineRenderer = GetComponent<LineRenderer>();
        lineRenderer.positionCount = 2;
        Vector3 pos2 = transform.position + Vector3.forward * 10;
        Vector3[] tempPoints = new Vector3[2] { transform.position, pos2};
        lineRenderer.SetPositions(tempPoints);
}

        然后计算下绘制的线段的长度;

        Vector3 start = lineRenderer.GetPosition(0);

        for (int i = 1; i < lineRenderer.positionCount; i++)
        {
            length += Vector3.Distance(start,lineRenderer.GetPosition(i));
            start = lineRenderer.GetPosition(i);
        }

        向下取整获得贴图的平铺数;

tileCount = Mathf.FloorToInt(length);

        设置LineRenderer;

lineRenderer.material.mainTextureScale = new Vector2(tileCount, 1) * tilingFactor;

        这样就可以呢,完整代码如下;

using UnityEngine;

public class LineRenderTest : MonoBehaviour
{
    public Vector2 tilingFactor = new Vector2(1f, 1f); // 初始平铺块数

    private LineRenderer lineRenderer;

    private float length;

    private  int tileCount;

    // Start is called before the first frame update
    void Start()
    {
        //给LineRenderer两个点
        lineRenderer = GetComponent<LineRenderer>();
        lineRenderer.positionCount = 2;
        Vector3 pos2 = transform.position + Vector3.forward * 10;
        Vector3[] tempPoints = new Vector3[2] { transform.position, pos2};
        lineRenderer.SetPositions(tempPoints);

        Vector3 start = lineRenderer.GetPosition(0);

        for (int i = 1; i < lineRenderer.positionCount; i++)
        {
            length += Vector3.Distance(start,lineRenderer.GetPosition(i));
            start = lineRenderer.GetPosition(i);
        }

        tileCount = Mathf.FloorToInt(length);

        lineRenderer.material.mainTextureScale = new Vector2(tileCount, 1) * tilingFactor;
    }

}

        效果如下图。

就这样呢。转载请注明出处:Unity中如何根据LineRenderer的长度动态的修改材质的平铺数量_俯首甘为孺子_刘的博客-CSDN博客Unity中如何根据LineRenderer的长度动态的修改材质的平铺数量https://blog.csdn.net/enjoySoledad/article/details/132642777?spm=1001.2014.3001.5501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值