如何在线性渲染器中添加更多点或位置?

时间:2019-10-21 04:15:32

标签: c# unity3d

我有一个LineRenderer,它只有两个点,即起点和终点。我想用给定的数字划分线,该数字将自动创建或向LineRenderer添加新点。例如,如果我将线除以2,它将在LineRenderer的中心添加另一个点。

已编辑: 现在使用工作脚本和图像结果第二次编辑了我的问题。我不知道这是否是最好的解决方案,但是对我有用。我唯一不知道的是如何根据line.position的数量计算要使用的除数。并为重复标记。我认为这与我想要的不一样。

GameObject stroke = new GameObject();
LineRenderer line = stroke.AddComponent<LineRenderer>();
line.startWidth = 0.1f;
line.endWidth = 0.1f;
line.useWorldSpace = true;
float divisor;
Vector3 start = new Vector3(-6.7399,-0.2475,0);
Vector3 end = new Vector3(-3.742899, -0.2475, 0);

line.positionCount = 4;

if(line.position == 4)
    divisor = 0.333f; //get by 1/3
else if(line.position == 3)
    divisor = 0.5f; //get by 1/2

Vector3 valuePerPosition = Vector3.Lerp(start, end, divisor);

for (int i = 0; i < line.positionCount; i++)
{
    Vector3 newPosition = start - valuePerPosition;
    line.SetPosition(i, start - (newPosition * i));

    GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
    sphere.transform.position = start - (newPosition * i);
    sphere.transform.localScale = new Vector3(0.125f, 0.125f, 0.125f);
}

enter image description here

0 个答案:

没有答案