一、出现异常的问题
正常情况下,使用Unity中画线工具LineRenderer。可以画出期望的直线。
但当拐点处,两点的距离过小,并且线的宽度不是特别细的情况下。组件动态生成的线会发生变形。
这是因为LineRenderer是根据填入的点位Positions和宽度Width来生成网格。如果两点间距过近,并且有一定的宽度,则计算出的连线会和期不一样,发生变形。
即使调高Corner Vertices拐点处的角顶点,只能让线看起来好一点,也无法解决变形问题。
二、解决办法
1.减小Width来保证显示正常,但很多情况下不适合
2.为拐点处,动态增加n个点
增加点位的代码:文章来源:https://www.toymoban.com/news/detail-600278.html
public static List<Vector3> AddLineRenderPos(Vector3[] posList, int addNum = 10)
{
List<Vector3> newPosList = new List<Vector3>();
addNum /= 2;
newPosList.Add(posList[0]);
//为除首尾点之外的拐点附近,动态增加点位。
for (int i = 1; i < posList.Length - 1; i++)
{
Vector3 start = posList[i - 1];
Vector3 mid = posList[i];
Vector3 end = posList[i + 1];
for (int j = addNum; j > 0; j--)
{
newPosList.Add(Vector3.Lerp(mid, start, j * 0.01f));
}
newPosList.Add(mid);
for (int j = 1; j <= addNum; j++)
{
newPosList.Add(Vector3.Lerp(mid, end, j * 0.01f));
}
}
newPosList.Add(posList[^1]);
return newPosList;
}
宽度恢复到1后,可以看到是期望的形状。
文章来源地址https://www.toymoban.com/news/detail-600278.html
到了这里,关于【Unity】LineRenderer画线拐点的网格变形问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!