Используйте этот код:
public class LinesCreator : MonoBehaviour
{
LineRenderer line;
GameObject Pos1, Pos2;
int currLines=0;
Vector3 pos1, pos2;
void CreateLine()
{
// To avoid creating multiple lines in the same positions.
if (Pos1.transform.position == pos1 && Pos2.transform.position == pos2)
return;
line = new GameObject("Line" + currLines).AddComponent<LineRenderer>();
//line = GetComponent<LineRenderer>(); // This will return the GameObject's line renerer, not the new GameObject's line rendere
pos1 = Pos1.transform.position;
pos2 = Pos2.transform.position;
line.SetPosition(0, pos1);
line.SetPosition(1, pos2);
line.startColor = Color.white;
line.endColor = Color.white;
line.startWidth = 0.7f;
line.endWidth = 0.7f;
line.positionCount = 2;
line.sortingOrder = 2;
line.useWorldSpace = true;
currLines++;
}
void Start()
{
Pos1 = GameObject.FindGameObjectWithTag("Pos1");
Pos2 = GameObject.FindGameObjectWithTag("Pos2");
InvokeRepeating("CreateLine", 0, 0.05f);
}
}
Внесенные мной изменения:
Прежде всего, чтобы программа работала так, как вы хотите, нужно удалить line = GetComponent ( ); (я закомментировал это).
Эта строка устанавливает line в lineRenderer gameObject (gameObject, на котором есть скрипт).
Нам этого не нужно, потому что мы хотим, чтобы строка была в новом gameObject.
Во-вторых, я добавляю условие, которое поможет вам не создавать строку, которая вам не нужна.
Я сделал это путем сравнения последней позиции и текущей позиции, если они оба (объекты) не двигались - вам не нужно рисовать новую линию.