Nie wiem na jakim konkretnie efekcie ci zależy, ale załóżmy że ścieżka może być wyznaczona przy pomocy punktów przez które ma przejść punkt, które możesz wrzucić do listy, która będzie się zapętlała, np:
Niech L będzie listą obiektów, A,B,C kolejnymi punktami przez które musi przejść obiekt, 'X -> Y' - relacja mówiąca tym, że "X wskazuje na Y", tzn
class MyList
{
Vector2 pos;
MyList* next;
};
// X -> Y <=>
x.next = y;
Wtedy, wystarczy, że będziesz sprawdzał czy sprite bliżył się do punktu z listy (samo podążanie do punktu możesz zrobić w ten sposób http://szymonsiarkiewicz.pl/poradniki/goto/podazanie-za-obiektem-w-przestrzeni-2d/ ), jeżeli tak to zmieniasz cel za którym ma podążać obiekt na następny.
Psuedokod
class MyList;
// ... <- def MyList
// gdzieś w jakiejś funkcji
MyList* path = new MyList();
path.push( Vector2(0,0) ); // A
path.push( Vector2(0,1) ); // B
path.push( Vector2(1,0) ); // C
path.push( Vector2(1,1) ); // D
/* ścieżka po jakiej będzie poruszał się obiekt
A <-- D
| ^
| |
v |
B --> C
*/