# Get positions at equal intervals between two Vector3

Hi!

I want to divide lineRenderer to some n parts and get vector3 positions between start position and and position. Right now I’m trying to use Vector3.Lerp for it in a for loop, but cant get the last value of lerp function right. Any help?

``````var ray2 = Camera.main.ScreenPointToRay (Input.mousePosition);

var layerBuildMask2  = 1 << 21;
var layerCritMask2  = 1 << 22;

var lineRenderer : LineRenderer = gameObject.GetComponent("LineRenderer");

var linePos : int = 16;
lineRenderer.SetVertexCount(linePos);

if (Physics.Raycast (ray, hit, Mathf.Infinity, combinedLayer))
{
var distance=Vector3.Distance(selectedBuilding.transform.position,hit.transform.position);

for(s = 0 ; s<linePos ; s++)
{
lineRenderer.SetPosition(s, Vector3.Lerp(hit.transform.position,selectedBuilding.transform.position,distance/s));
}

}
``````

Lerp expects a 0-1 percent as the last input, so just give it 0/15, 1/15, 2/15 … 15/15. I think the confusion is that most people don’t have a 0-1, so have to do math to force it. You’re using lerp for the exact thing it was meant to do:

``````for(int s=0;s<linePos;s++) {
... lerp(start, stop, s/(linePos-1)) ...
// EX: when s=5, you get 5/15ths, so the point is 1/3rd of the way over
``````

The extra “-1” is because you want to start at 0/15ths and end at 15/15ths (equals 100%.) That’s a total of 16 points.

Divide by zero may be killing the rest of the for loop, and “distance/s” wrong.

Try this:

``````var targetPos : Vector3 = selectedBuilding.transform.position;
Debug.Log (targetPos);
var clickPos : Vector3 = hit.transform.position;
Debug.Log (clickPos);
lineRenderer.SetPosition(0,clickPos);
for (var s : int = 1; s < linePos; s++)
{
Debug.Log(s);
var percentage : float = s/linePos;
Debug.Log(percentage);
var splitPos : Vector3 = Vector3.Lerp(clickPos,targetPos),percentage);
Debug.Log(splitPos);
lineRenderer.SetPosition(s, splitPos);
}
``````

The last value of Vector3.Lerp() smoothing. The higher its value the faster the object will interpolate to the given position. Use “0” for maximum smoothing and “1” for minimum smoothing.