示例#1
0
    void Update()
    {
        float calcDist = Mathf.Pow(.5f, 2f);

        if (tree.Count < 200)
        {
            for (var i = walkers.Count - 1; i >= 0; i--)
            {
                Walker w = walkers[i];
                w.Walk();
                for (var j = tree.Count - 1; j >= 0; j--)
                {
                    if (QuickDistance(w.Position, tree[j].Position) < calcDist)
                    {
                        tree.Add(w);
                        w.Attach(tree[j].Position);
                        walkers.RemoveAt(i);
                        walkers.Add(CreateWalker());
                        break;
                    }
                }
                // if (w.Position.y < 0)
                // {
                //     Destroy(w.dot);
                //     walkers.RemoveAt(i);
                // }
            }
        }
        else if (walkers.Count > 0)
        {
            for (var i = walkers.Count - 1; i >= 0; i--)
            {
                DestroyImmediate(walkers[i].dot, true);
                walkers.RemoveAt(i);
            }
        }
    }