示例#1
0
文件: Unit.cs 项目: VelluVu/Vellings
    void Builder(float delta)
    {
        if (!initLerp)
        {
            build_t += delta;

            if (build_t > build_Time)
            {
                build_t  = 0;
                initLerp = true;
                bool interrupt = false;
                build_Count++;

                if (build_Count > buildAmount)
                {
                    interrupt = true;
                }

                int _tx = curNode.x;
                int _ty = curNode.y;
                _tx = (movingLeft) ? _tx - 1 : _tx + 1;
                _ty++;

                startPos   = transform.position;
                targetNode = gameControl.GetNode(_tx, _ty);

                if (targetNode.isEmpty == false || interrupt)
                {
                    ChangeAbility(Ability.walker);
                    return;
                }

                targetPos = gameControl.GetWorldPosFromNode(targetNode.x, targetNode.y);
                float dist = Vector3.Distance(startPos, targetPos);

                moveSpeed = build_Speed / dist;
                //Debug.Log(moveSpeed);



                List <Node> possibleNodes = new List <Node>();

                for (int i = -1; i < 6; i++)
                {
                    int  size = _tx + i;
                    Node n    = gameControl.GetNode(size, curNode.y);

                    if (n.isEmpty == true)
                    {
                        possibleNodes.Add(n);
                    }
                }
                gameControl.AddPossibleNodesToSelection(possibleNodes);
            }
        }
        else
        {
            LerpIntoPosition(delta);
        }
    }