Unity: как ограничить количество вершин в рендерере - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь нарисовать линии с определенным максимумом разрешенных вершин перед остановкой. Однако, когда у меня есть максимум вершин, таких как 20, если вы рисуете быстро, длина линии будет дальше, чем если бы вы рисовали медленнее. Как бы вы ограничили количество вершин, чтобы линия остановилась только до определенной длины?

public List<Vector3> linePoints;
LineRenderer line;
int lineLength = 20;
Vector3 touchPos;
bool touching = false;

void Awake ()
{
  line = gameObject.GetComponent<LineRenderer>();
  linePoints = new List<Vector3>();

  line.SetVertexCount(0);
  line.SetWidth(0.3f, 0.3f);
  line.SetColors(Color.cyan, Color.cyan);

  line.useWorldSpace = true;
}

void Update ()
{
  if (Input.touchCount >= 1)
  {
    touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
    touchPos.z = 0;

    if (!touching)
    {
      line.SetVertexCount(0);
      linePoints.RemoveRange(0, linePoints.Count);
      line.SetColors(Color.cyan, Color.cyan);
      touching = true;
    }
    else
    {
      if (linePoints.Count <= lineLength)
      {
        if (!linePoints.Contains(touchPos))
        {
          linePoints.Add(touchPos);
          line.SetVertexCount(linePoints.Count);
          line.SetPosition((linePoints.Count - 1), (Vector3)linePoints[(linePoints.Count - 1)]);
        }
      }
      else
      {
        touching = false;
      }
    }
  }
  else
  {
    touching = false;
  }
}

Линия должна отображаться одинаковой длины независимо от того, насколько быстро вы рисуете.

...