Как убрать начальные точки LineRenderer? (Точка 0, точка 1, точка 2) - PullRequest
0 голосов
/ 07 апреля 2020

Я создал линию, используя LineRenderer, и через некоторое время мне нужно удалить начальные точки (точка 0, точка 1, точка 2). Я пытаюсь убрать coroutia с моего пути. Но он начинает отходить от последней половины точки, а не от начальной

lineRenderer.positionCount = i+1;
Vector3 mPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15);
lineRenderer.SetPosition(i, Camera.main.ScreenToWorldPoint(mPosition));
i++;

public IEnumerator DeleteLine()
{
    int i = lineRenderer.positionCount;

    while (true)
    {

        if(i >= 0)
        {
            lineRenderer.positionCount = i;
        }
        else
        {
            lineRenderer.positionCount = 0;
            i = 0;
            StopCoroutine(_deletePosLine);
        }
        print(i);
        i--;

        yield return new WaitForSeconds(0.1f);

    }
}

1 Ответ

0 голосов
/ 07 апреля 2020
  1. Получите все очки вашего LineRenderer с помощью GetPositions() или сохраните список самостоятельно.
  2. Удалить первый элемент из массива. Вы можете сделать это, выделив другой массив (минус одну точку) и скопировав все элементы, начиная с индекса 1. (не 0). Существуют и другие альтернативы с использованием списков / коллекций.
  3. Затем снова установите все позиции, используя SetPositions(), с правильным сначала positionCount, конечно.

Или: отслеживайте все свои точки в Stack<Vector3> и Pop() первый элемент, преобразуйте его в массив, используя ToArray(), и используйте его в SetPositions. Это может работать лучше.

Для объяснения Stack см., Например, https://www.tutorialsteacher.com/csharp/csharp-stack.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...