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); }