Example #1
0
    public IEnumerator Move(List <Node> path)
    {
        if (path != null)
        {
            animator.SetFloat("Speed", 1f);
            foreach (Node node in path)
            {
                Vector3 startPos    = transform.position;
                Vector3 nextStepPos = node.transform.position;

                transform.LookAt(nextStepPos);

                float startTime = Time.time;
                while (startTime + moveTime > Time.time)
                {
                    transform.position = Vector3.Lerp(startPos, nextStepPos, (Time.time - startTime) / moveTime);
                    yield return(null);
                }
                grid.UpdateGrid(currentNode, node);
                currentNode = node;
            }
            animator.SetFloat("Speed", 0f);
        }
        else
        {
            Debug.Log("No possible path");
        }
    }
    public IEnumerator Move(Node targetNode, List <Node> path)
    {
        animator.SetFloat("Speed", 1f);
        foreach (Node node in path)
        {
            Vector3 startPos    = transform.position;
            Vector3 nextStepPos = new Vector3(node.transform.position.x, node.transform.position.y + 0.25f, node.transform.position.z);

            transform.LookAt(nextStepPos);

            float startTime = Time.time;
            while (startTime + moveTime > Time.time)
            {
                transform.position = Vector3.Lerp(startPos, nextStepPos, (Time.time - startTime) / moveTime);
                yield return(null);
            }
            grid.UpdateGrid(currentNode, node);
            currentNode = node;
        }
        animator.SetFloat("Speed", 0f);
    }