void Start()
 {
     if (PathCache == null)
     {
         PathCache = new Queue <Vector3>();
     }
     if (PathQueue.Count > 0)
     {
         TargetNode    = PathQueue.Dequeue();
         StartPosition = TargetNode;
     }
     else
     {
         Debug.Log("PathQueue is empty");
     }
 }
    // Update is called once per frame
    void Update()
    {
        Vector3 dir = TargetNode - transform.position;

        dir.Normalize();

        transform.Translate(dir * Time.deltaTime * CurrentCreep.MovementSpeed);

        if (Vector3.Distance(transform.position, TargetNode) < NodeMargin)
        {
            Debug.Log("Creep reached target node");
            if (PathQueue.Count > 0)
            {
                PathCache.Enqueue(TargetNode);
                TargetNode = PathQueue.Dequeue();
            }
            else
            {
                ReachedGoal(GoalAction);
            }
        }
    }