如何更改StartCoroutine中绘制线条的速度?

时间:2018-03-29 02:34:13

标签: c# unity3d

在开始时间:

private void Start()
    {
       StartCoroutine(moveLines());
    }

在moveLines中:

IEnumerator moveLines()
    {
        for (int i = 0; i < allLines.Count; i++)
        {
            allLines[i].SetActive(true);
            counter = 0;
            endPos = allLines[i].GetComponent<EndHolder>().EndVector;

            var dist = Vector3.Distance(endPos, startPos);
            while (counter < 25)
            {
                dist = Vector3.Distance(instancesToMove[0].transform.position, endPos);
                counter++;
                endPos = allLines[i].GetComponent<EndHolder>().EndVector;
                startPos = allLines[i].GetComponent<LineRenderer>().GetPosition(0);

                instancesToMove[0].transform.position =
                    Vector3.MoveTowards(startPos, endPos, counter / 25f * speed);

                allLines[i].GetComponent<LineRenderer>().SetPosition(1, instancesToMove[0].transform.position);

                yield return null;
            }
        }
    }

我有一个全局速度变量,但它没有改变线条图的速度。

allLines是一个List,每个GameObject都有一个LineRenderer组件。

instancesToMove也列出了这个对象与行同时移动。

但我想让整个过程更快。我希望线条绘制和移动速度更快。如果我现在更改速度变量值,它将根本不绘制线条。

1 个答案:

答案 0 :(得分:1)

counter更改为计入其他值,并将/ 25f更改为该新值。较小的值=更快的抽奖。

你的代码说“这样做了25次,当它达到25次时,就行了。”这意味着您需要花费25帧来绘制线条。如果您希望它绘制得更慢,则需要更改绘制线条所花费的帧数。

这也使你的速度变化......毫无用处。你可以完全删除它。